V GME jsem zakoupil vývojový modul Arduino UNO, který je osazen procesorem ATMEGA 328P. Arduino Uno je vývojová deska s mikroprocesorem ATMega328 určená, jak pro úplné začátečníky tak pro pokročilé. Tato deska je nástupce Arduina Duemilanove pro rok 2011. Lze se s ní naučit práci s mikroprocesory za použití speciálního jednoduchého jazyku Wiring.
Můžete tak vyrobit blikající LEDku, vlastního robota či zavlažování skleníku. Arduino je určeno pro kutily, bastlíře, umělce a designéry - zkrátka pro každého, koho zajímá vytváření interaktivních hraček a výrobků vytvořených podle vlastních představ.
Specifikace
Mikroprocesor: Atmel ATMega328, 16MHz takt, 32kB flash paměť, 2kB SRAM paměť, 1kB EEPROM paměť, Architektura, Atmel AVR.
Mikroprocesor: Atmel ATMega328, 16MHz takt, 32kB flash paměť, 2kB SRAM paměť, 1kB EEPROM paměť, Architektura, Atmel AVR.
Připojitelnost k PC: USB-RS-232 za použití převodníku úrovní.
Napájení: 5V USB (nebo 7-12V adaptér).
I/O piny: 14 digitálních, 0,1 - sériová linka, 2,3 - externí přerušení, 3,5,6,9,10,11 - PWM, 10,11,12,13 - SPI (s knihovnou SPI library), 4,5 - I2C (s knihovnou Wire library), 6 vstupních analogových.
Programovací jazyk: Wiring s Processing IDE (reference).
Multiplatformní vývojové prostředí (Win/Linux/Mac/...)
Byl jsem kolegou požádán o sestrojení obvodu simulující pohyb žaluzie pro potřebu výuky. Vstupem řízení bude 2x kontakt relé a výstupem bude 9 LED diod. V klidu jsou LED vypnuté (vstupy = 0V), vstup a=+5V LED běží rychlostí 200ms jedním směrem, vstup b=+5V LED běží rychlostí 200ms druhým směrem...
Program pro prostředí IDE:
/* Martin Pihrt 28.6.2012 Blikání pásku led diod pro rolety Arduino UNO program V1.0.1 Tento kód je šířen v licenci public domain. */ // Arduino UNO piny // Pin 13 - 4 výstup pro LED1 - LED9. // Pin 3 vstup na GND/+5V světlo běží vlevo +5V aktivuje funkci. // Pin 2 vstup na GND/+5V světlo běží vpravo +5V aktivuje funkci. // Pokud Pin 2+3 = GND LED jsou vypnuté. // přiřazení vývodů na arduino: int led1 = 13; int led2 = 12; int led3 = 11; int led4 = 10; int led5 = 9; int led6 = 8; int led7 = 7; int led8 = 6; int led9 = 5; int led10 = 4; int leftbutton = 3; //vstup tlačítka vlevo int rightbutton = 2; //vstup tlačítka vpravo int timer = 100; // 100ms smyčka // proměnná vstupu tlačítek: int buttonleftState = 0; int buttonrightState = 0; // rutina, která se spustí po resetu: void setup() { // přiřazení digitalních pinů jako výstup. pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); pinMode(led7, OUTPUT); pinMode(led8, OUTPUT); pinMode(led9, OUTPUT); // přiřazení digitalních pinů jako vstup. pinMode(leftbutton, INPUT); pinMode(rightbutton, INPUT); } // smyčka programu - běží neustále dokola: void loop() { // čtení vstupu tlačítka na pinu 3 - left: buttonleftState = digitalRead(leftbutton); if (buttonleftState == HIGH) { goto leftout; } // je tlačítko stisklé tj. +5V potom skoč na leftout. else { // tlačítko na pinu 3 = 0V - všechny LED vypnuté: digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); } // čtení vstupu tlačítka na pinu 2 - right: buttonrightState = digitalRead(rightbutton); if (buttonrightState == HIGH) { goto rightout; } // je tlačítko stisklé tj. +5V potom skoč na rightout. else { // tlačítko na pinu 2 = 0V - všechny LED vypnuté: digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); } return; leftout: digitalWrite(led1, HIGH); delay (timer); digitalWrite(led1, LOW); digitalWrite(led2, HIGH); delay (timer); digitalWrite(led2, LOW); digitalWrite(led3, HIGH); delay (timer); digitalWrite(led3, LOW); digitalWrite(led4, HIGH); delay (timer); digitalWrite(led4, LOW); digitalWrite(led5, HIGH); delay (timer); digitalWrite(led5, LOW); digitalWrite(led6, HIGH); delay (timer); digitalWrite(led6, LOW); digitalWrite(led7, HIGH); delay (timer); digitalWrite(led7, LOW); digitalWrite(led8, HIGH); delay (timer); digitalWrite(led8, LOW); digitalWrite(led9, HIGH); delay (timer); digitalWrite(led9, LOW); return; rightout: digitalWrite(led9, HIGH); delay (timer); digitalWrite(led9, LOW); digitalWrite(led8, HIGH); delay (timer); digitalWrite(led8, LOW); digitalWrite(led7, HIGH); delay (timer); digitalWrite(led7, LOW); digitalWrite(led6, HIGH); delay (timer); digitalWrite(led6, LOW); digitalWrite(led5, HIGH); delay (timer); digitalWrite(led5, LOW); digitalWrite(led4, HIGH); delay (timer); digitalWrite(led4, LOW); digitalWrite(led3, HIGH); delay (timer); digitalWrite(led3, LOW); digitalWrite(led2, HIGH); delay (timer); digitalWrite(led2, LOW); digitalWrite(led1, HIGH); delay (timer); digitalWrite(led1, LOW); return; } |
Připojení vstupů a výstupů k Arduinu:
Video - nepájivé pole
Nepájivé pole: