Arduino

Z MediaWiki SPŠ a VOŠ Písek
Přejít na: navigace, hledání
Arduino Duemilanove
SW
Arduino Uno

Arduino

  • Mikrokontrolér: ATmega168 / ATmega328
  • Takt procesoru: 16 MHz
  • Pracovní napětí: 5V (Vstupní napětí (doporučené): 7 až 12V)
  • 14 digitálních vstupně-výstupních pinů (z toho 6 s podporou PWM)
  • 6 analogových vstupů
  • Proudové zatížení I/O pinu: 40mA
  • Flash paměť: 16 KB (ATmega168) nebo 32 KB (ATmega328), z toho 2 KB zabírá bootloader
  • SRAM: 1 KB (ATmega168) nebo 2 KB (ATmega328)
  • EEPROM: 512 bytů (ATmega168) nebo 1 KB (ATmega328)

Vývoj MIT aplikace s Arduino:

/*
* Blink
* http://www.arduino.cc/en/Tutorial/Blink
*/
 
int ledPin = 13;   // LED je připojena na pin 13
 
void setup() // tato část proběhne jednou po startu
{
pinMode(ledPin, OUTPUT); // nastaví pin jako výstupní
}
 
void loop()    // tato část probíhá stále dokola
{
digitalWrite(ledPin, HIGH);   // rozsvícení LED
delay(1000);                  // pauza 1s
digitalWrite(ledPin, LOW);    // zhasnutí LED
delay(1000);                  // pauza 1s
}

jednoduchá aplikace pro Arduino:

/*
* Robot Pepík - učebna D10
* Tento program zobrazuje čas, který uběhl od spuštění programu   
* - při každé 0té sekundě popojede dopředu   
* - při každé první sekundě se zastavý     
* - při každé desáté sekundě popojede zpět   
* - při každé jedenácté sekundě se zastavý      
*/   
 
// přiložení knihovny pro práci s LCD  
#include <LiquidCrystal.h>   
 
// inicializace LCD - nastavení používaných pinů 
LiquidCrystal lcd(11, 9, 5, 4, 3, 2);    
 
//inicializace portů DC Motorů  
int motor_left[] = {6, 7};   
// pole obsahující ovládací piny levého motoru  
int motor_right[] = {8, 10}; // pole obsahující ovládací piny pravého motoru   void setup() {   //DC motory - počáteční nastavení    
 
int i;  for(i = 0; i < 2; i++){
  pinMode(motor_left[i], OUTPUT);  
  pinMode(motor_right[i], OUTPUT);
  }     
 
lcd.begin(16, 2);   // nastavení rozsahu LCD monitoru  
 
lcd.setCursor(0, 0);   // nastavení kurzoru na LCD na pozici 0:0    
lcd.print("Minuty:");  // vytiskne text na LCD    
 
lcd.setCursor(0, 1);   // nastavení kurzoru na LCD na pozici 0:0    
lcd.print("Sekundy:"); // vytiskne text na LCD    
}    
 
void loop() {  // tato funkce se neustále opakuje   
  int sekundy = (millis()/1000);  // zjištění a výpočet doby, od spuštění programu - v sekundách
  int minuty = millis()/1000/60;  // zjištění a výpočet doby, od spuštění programu - v minutách
  sekundy -= minuty*60;  // korekce času - po 60ti sekundách se sekundy vynulují   
  if(sekundy == 0)  // když se sekundy rovnají 0, display se vymaže
    {  
    lcd.setCursor(10, 0);
    lcd.print("     ");
 
    lcd.setCursor(10, 1);
    lcd.print("     ");
 
    drive_forward(); // v nulté sekundě se motor vždy rozjede dopředu
    }
 
  lcd.setCursor(10, 0);  // nastaví pozici kurzoru na LCD
  lcd.print(minuty);     // vytiskne čas, který uběhl od spuštění programu v minutách
 
  if(sekundy==1)  // v první sekundě se motor vždy zastavý 
    {
    motor_stop();
    }
  if(sekundy == 10) // v desáté sekundě se motor vždy rozjede dozadu
    {
    drive_backward();
    }
  if(sekundy == 11) // v jedenácté sekundě se motor vždy zastavý
    {
    motor_stop();
    }
 
    lcd.setCursor(10, 1);
    lcd.print(sekundy);    // vytiskne čas, který uběhl od spuštění programu v sekundách
    }
 
  void motor_stop(){       //zastaví DC motory
   digitalWrite(motor_left[0], LOW);
   digitalWrite(motor_left[1], LOW);
 
   digitalWrite(motor_right[0], LOW);
   digitalWrite(motor_right[1], LOW);
   delay(25);
   }    
 
  void drive_forward(){    //zapne DC motory směrem dopředu
   digitalWrite(motor_left[0], HIGH);
   digitalWrite(motor_left[1], LOW);
 
   digitalWrite(motor_right[0], HIGH);
   digitalWrite(motor_right[1], LOW);
   }
 
  void drive_backward(){    //zapne DC motory směrem vzad
   digitalWrite(motor_left[0], LOW);
   digitalWrite(motor_left[1], HIGH);
 
   digitalWrite(motor_right[0], LOW);
   digitalWrite(motor_right[1], HIGH);
   }
 
  void turn_left(){    //zapne DC motory a zatočí vlevo
   digitalWrite(motor_left[0], LOW);
   digitalWrite(motor_left[1], HIGH);
 
   digitalWrite(motor_right[0], HIGH);
   digitalWrite(motor_right[1], LOW);
   }
 
  void turn_right(){    //zapne DC motory a zatočí vpravo
   digitalWrite(motor_left[0], HIGH);
   digitalWrite(motor_left[1], LOW);
 
   digitalWrite(motor_right[0], LOW);
   digitalWrite(motor_right[1], HIGH);
   }

www:

Arduino-josefnav.jpg Arduino Duemilanove
Blikani-LED.jpg Arduino: První program - blikání LED Arduino Examples #1
Arduino-LCD.png LCD displays HD44780
Arduino-L293.jpg Control your motors with L293D
Arduino-Knight-rider.jpg Arduino: Knight rider
Arduino-web-camera.jpg Arduinem ovládaná webkamera streamující video přes VLC #2
Arduino-a-LCD-s-S6A0069-radicem.png Arduino a LCD s S6A0069 řadičem
How-to-Make-LEDs-Flash-to-Music-with-an-Arduino.jpg How to Make LEDs Flash to Music with an Arduino
Arduino-distance-sensor-ping.jpg Arduino – Distance Sensor PING)))
Arduino-na-wiki.jpg Arduino
Cesky-arduino.jpg První český Arduino obchod
Arduino tutorial.jpg Arduino Tutorial
Arduino dc motor.jpg Control a DC motor with Arduino and L293D chip
Arduino MPX display.jpg Display the fan speed for the PC
Arduinocheatsheet.png download
Osobní nástroje
Jmenné prostory
Varianty
Akce
Rychlá navigace
NEJ aktivity
Nejlepší předměty
Nejlepší MCU
SW-HW
Ostatní
Utility
Nástroje
Tisk/export