Aiesec University 2012-arduino
-
Upload
alexandru-iovanovici -
Category
Education
-
view
798 -
download
0
Transcript of Aiesec University 2012-arduino
Track – First Day
What is Arduino ? Developement environment; „Hello world” ... Arduino way Buttons, LEDs, Temp. sensor, Serial port, LCD
and varoius others; Driving motors and reading distances with
Arduino; Sumo Robots principles ...
Sumo rules
Track – Second day
... and practices; State machines;
Preseinting AU-Bot ;-) Mecanical and soldering skills
Rough programming of the Bot; Simple state machine that does not much
Let your imagination roar No dirty tricks ... or ... ?
Pini: analogici si digitali
Pinii digitali sunt utilizati pentru a citi marimi care pot avea doar doua valori (exemplu : "este butonul apasat sau nu este"), pentru a comanda dispozitve externe (led-uri, motoare) si pentru a comunica cu dispozitive care utilizeaza protocoale digitale.
int v = digitalRead(6);
digitalWrite(6, HIGH);
Pinii analogici sunt utilizati pentru a citi marimi care variaza continuu (exemple : nivelul de ilumare din incapere, distanta pana la un obiect).
int distanta = analogRead(3);
„Limbajul” Arduino
void setup() {
//codul de aici ruleaza //o singura data
}
void loop() {
/* codul de aici ruleaza cat timp Arduino este
alimentat */
}
Doua led-uri
Sa se realizeze circuitul electric si un program care sa aprinda doua led-uri alternativ: primul led sta aprins 1 secundea apoi se stinge si se aprinde al doilea si tot asa
Debug in consola seriala- util pentru a intelege ce se intampla cu programul care ruleaza pe Arduino.- codul care ruleaza pe Arduino trimite text catre PC, care este afisat in mediul
de dezvoltare, in consola seriala.
void setup() { Serial.begin(9600);}int i;void loop() { i++; Serial.println(i); delay(500);}
Senzor de lumina- primul exemplu de senzor analogic- fotorezistor- divizorul de tensiune !!!
5V - 5V ArduinoGND - GND ArduinoA0 - pinul 0 analogic Arduino
void setup() {Serial.begin(9600);
}
void loop() { int v = analogRead(0); Serial.println(v);}
Buton- primul exemplu de „senzor” digital
5V - 5V ArduinoGND - GND ArduinoDO - pinul 7 digital Arduino
void setup() {Serial.begin(9600);
pinMode(7, INPUT);}
void loop() { int v = digitalRead(7); Serial.println(v);}
Structura "IF"
if ( <conditie> ) {actiune1;
} else {actiune2;
}
Exista si operatorul contitional ternar „?” pentru cine simte nevoia ;)
Led + Buton - conexiuni
prelungitor alimentarepinul negru - GND Arduinopinul rosu - 5V Arduinoled
pinul negru - GND prelungitor alimentarepinul alb(albastru) - pinul digital 13 Arduino
butonpinul negru - GND prelungitor alimentarepinul rosu - 5 V prelungitor alimentarepinul alb(albastru) - pinul 7 digital Arduino
Led + Buton - cod sursavoid setup() {
pinMode(7, INPUT);}
void loop() {int v = digitalRead(7);if (v == 1) {
digitalWrite(13, HIGH); }
else {digitalWrite(13, LOW);
}}
Senzor de distantaMasoara distanta pana la primul obiect din fata senzorului. Este relativ precis intre 10 cm si 80 de cm. Sunt senzori si pentru alte intervale de precizie
pinul rosu – 5V
pinul negru – GND
pinul alb -
pinul 0 analog Arduino
float volts = analogRead(0)* ((float) 5 / 1024);float distance = 65*pow(volts, -1.10);
Senzor de distanta - debug serial
- realizeaza un montaj care sa afiseze distanta citita de senzor in interfata de debug seriala.
Senzor de distanta + Led-uri
- realizeaza un montaj care sa aprinda unul, doua sau trei led-uri, in functie de distanta citita de senzorul de distanta.
Difuzor
void setup() {tone(pin, frequency, duration);
}void loop(){
}
http://www.robofun.ro/electronice/minidifuzor-brick
Senzor de distanta + Difuzor
- realizeaza un montaj care sa genereze un sunet cu o frecventa proportionala cu distanta citita de senzorul de distanta.
- creeaza muzica miscand mana in fata senzorului.
Senzor de temperatura
Rosu - 5V Arduino
Negru - GND Arduino
Albastru - pinul 0 Analogic Arduino
int sensorPin = 0;void setup(){ Serial.begin(9600);} void loop(){ int reading = analogRead(sensorPin); float voltage = reading * 5.0; voltage /= 1024.0; float temperatureC = (voltage - 0.5) * 100 ; Serial.print(temperatureC); Serial.println(" degrees C"); delay(1000);}
void setup(){ Serial.begin(9600); analogReference(EXTERNAL);}void loop(){ float xAcc=readAcc(0); float yAcc=readAcc(1); float zAcc=readAcc(2); Serial.print("Acceleration "); Serial.print(" x:"); Serial.print(xAcc,DEC); Serial.print(" y:"); Serial.print(yAcc,DEC); Serial.print(" z:"); Serial.print(zAcc,DEC); Serial.println(); delay(100);}
float readAcc(int port){
int value=analogRead(port);
int miliVolts=map(value,0,1023,0,3300)-3300/2;
float acc=(float)miliVolts/360;
return acc;
}
Accelerometre