Translate

sâmbătă, 24 decembrie 2011

Interactiune Arduino - User

Exista mai multe moduri in care Arduino poate interactiona cu userul. Acest post va prezenta cateva dintre ele:
  • Comunicarea pe computer prin Serial; Arduino va afisa mesaje ce pot fi vazute cu Serial Monitor
  • Afisarea pe un ecran LCD 1602 (16 caractere si 2 randuri)
  • Afisarea pe un ecran echipat cu un modul IIC. Personal nu pot spune foarte multe despre acest IIC, dar exista foarte multe resurse disponibile pe Internet. Cateva informatii, nu foarte lamuritoare aici.
Pentru exemplificarea primului mod mentionat, avem nevoie doar de un controller Arduino si de un cablu sa-l conectam la calculator. Dupa ce am conectat controllerul la calculator, vom introduce un programel scurt:

void setup(){
pinMode(13,OUTPUT);
Serial.begin(9600);
Serial.println("Welcome to");
Serial.println("The Arduino Blog");
digitalWrite(13, HIGH);
}
void loop(){
}


Rezultatul programului prezentat
Dupa ce il urcam pe Arduino, in partea dreapta a IDE-ului avem Serial Monitor (incercuit cu rosu). Il deschidem, daca nu apare nimic (desi ar trebui) apasam butonul Reset de pe Arduino. Cand ledul de pe pinul 13 se aprinde, ar trebui sa obtinem ceva asemanator cu screen-shot-ul de deasupra.

A doilea si al treilea mediu de afisare este un ecran LCD cu 2 randuri si 16 caractere/rand. Desi in esenta sunt acelasi mediu, voi prezenta doua moduri de a-l folosi.
Conexiunile Arduino - ecran
Pentru realizarea programului, avem nevoie de o librarie, "LiquidCrystal.h", care trebuie inclusa in programul nostru. Aceasta librarie permite afisarea pe orice ecran care foloseste un driver compatibil cu Hitachi HD44780; acestea pot fi identificate dupa conectorul cu 16 pini (evident al ecranului).

In poza de deasupra, sunt prezentate legaturile necesare pentru a pune in functiune ecranul. Conexiunile sunt urmatoarele:
LCD RS -> digital pin 12
LCD Enable -> digital pin 11
LCD D4  -> digital pin 5
LCD D5 -> digital pin 4
LCD D6 -> digital pin 3
LCD D7 -> digital pin 2.
Pentru a putea regla intensitatea literelor, legam si un potentiometru ca in figura.
Urmeaza programul care trebuie scris:

// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 

void setup() {

  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  lcd.setCursor(2,0);
  lcd.print("The  Arduino");
  lcd.setCursor(6,1);
  lcd.print("Blog");
}

void loop() {
  }

Programul afiseaza pur si simplu pe ecran "The Arduino Blog". Am realizat si eu montajul si l-am pus la treaba:
Montajul realizat pentru ecranul LCD

Inchei acest post pentru ca a ajuns Mos Craciun si trebuie sa-l intampin. Voi continua intr-un post ulterior discutia despre afisarea pe un ecran LCD ce are un modul IIC si mai multe detalii despre diferitele functii ale bibliotecii LiquidCrystal; aceasta scurta prezentare ofera si alte posibilitati de proiectele.

Urez tuturor cititorilor un Craciun Fericit alaturi de cei dragi!

luni, 12 decembrie 2011

Arduino IDE 1.0 and new Arduino UNO

Arduino IDE 1.0 este cea mai recenta versiune de IDE propusa de cei de la Arduino; este disponibila pentru download aici, gratuit. Aceasta versiune este compatibila cu Windows (0023 nu suporta 64-bit, pe aceasta nu am testat-o inca), Mac OS X, iar pentru Linux sunt disponibile variante si pentru 32 si pentru 64 biti.

Relativ recent, a aparut si noul Arduino UNO. Acesta are o mica modificare la controllerul USB; la varianta noua se foloseste un ATMega 8u2

Amy Macdonald - This is the life



Saptamana trecuta s-a terminat sub semnul acestei melodii, asa ca m-am gandit sa o asculte toata lumea

duminică, 11 decembrie 2011

"Semafor" Shield for Arduino

Proiectul urmator este un mic upgrade al ultimului proiect prezentat, respectiv este un semafor cu perechea sa pentru pietoni; unul conceput pentru treceri de pietoni; are un buton push; cand este apasat declanseaza secventa de oprire a masinilor(rosu pentru masini) si de liber pentru pietoni (verde pentru pietoni). Scopul acestui proiectel este exemplificarea utilizarii unui buton push, a posibilitatii de creere de functii si a functiei de timp predefinita millis().
Schema generala a conexiunilor shield-ului
Am realizat o schema a shield-ului; conexiunile sunt asemanatoare, dar pentru a putea fi vazut mai usor, schema nu este chiar shield.
Voi prezenta modul de lucru al semaforului. In conditii normale, semaforul va fi verde pentru masini si rosu pentru pietoni. In momentul in care este apasat butonul, dupa 10 (10000ms) secunde se stinge becul verde si se aprinde galbenul pentru masini timp de 4 secunde apoi rosu pentru masini; in tot acest timp pentru pietoni este rosu. Din motive de siguranta, verdele pentru pietoni se va aprinde la 3 secunde dupa rosul pentru masini; dupa 20 de secunde verdele pietonilor va incepe sa lumineze intermitent si se stinge becul verde si se aprinde becul rosu; peste 2 secunde se da liber masinilor. Din motive practice, trebuie sa adaugam o functie care sa impiedice schimbarea semaforului pentru fiecare pieton care doreste sa traverseze; asa ca vom adauga in program o conditie care sa contorizeze timpul trecut de la ultima declansare; astfel timp de 2 minute nu se va mai da liber pentru pietoni de oricate ori este apasat butonul.
 In timp ce scriam postul, mi-am dat seama ca am omis sa introduc pposibilitatea de a memora apasarea butonului in cele 2 minute si la scuregerea lor sa apeleze functia de schimbare a semaforului.
Rezumatul Proiectului
 Daca realizam lipiturile conform cu schema de mai sus; evident avand grija sa punem pinii pe sheld in asa fel incat atunci cand vom dori sa il conectam cu Arduino, pinii de pe shield sa intre in pinii corespunzatori de pe Arduino; pini pe care i-am folosit in sketch.
Shield-ul pe care l-am construit este conectat la pinii digitali 13, 12, 11, 10, 9, 8 si la pinii de alimentare 5V si GND. Am ales acest layout pentru o fixare mai buna. Desigur, se poate folosi si pin-ul GND de langa pin-ul 13. Pentru buton, alegerea pinului 13 nu este intamplatoare( rol de control); acesta avand un led pe placuta Arduino; astfel pot vedea un efect atunci cand apas butonul din circuit. Voi pune acum si codul complet pe care l-am folosit la realizarea proiectului:

Arduino cu "semafor" shield atasat


//Interactive Traffic Lights
/*
Author:
  THE ARDUINO BLOG
http://thearduinoblog.blogspot.com
*/  

// assign the car lights
 int carRed = 12;
int carYellow = 11;
int carGreen = 10;


// assign the pedestrian lights
int pedRed = 8;
int pedGreen = 9;
int button = 13; // button pin
int crossTime = 20000; // time allowed to cross
unsigned long changeTime; // time since button pressed
void setup() {

Arduino si "Semafor" Shield

  pinMode(carRed, OUTPUT);
  pinMode(carYellow, OUTPUT);
  pinMode(carGreen, OUTPUT);
  pinMode(pedRed, OUTPUT);
  pinMode(pedGreen, OUTPUT);
  pinMode(button, INPUT); // button
  // turn on the green light
  digitalWrite(carGreen, HIGH);
  digitalWrite(pedRed, HIGH);
}
void loop() {
  int state = digitalRead(button);
  /* check if button is pressed and it is
  over 2 minutes since last button press */
  if (state == HIGH && (millis() - changeTime) > 120000) {
    // Call the function to change the lights
    delay(10000);
    changeLights();
  }
}
void changeLights() {
  digitalWrite(carGreen, LOW); // carGreen off
  digitalWrite(carYellow, HIGH); // carYellow on
  delay(4000); // wait 4 seconds
  digitalWrite(carYellow, LOW); // carYellow off
  digitalWrite(carRed, HIGH); // carRed on
  delay(3000); // wait till its safe
  digitalWrite(pedRed, LOW); // pedRed off
  digitalWrite(pedGreen, HIGH); // pedGreen on
  delay(crossTime); // wait for preset time period
  // flash the ped green
  for (int x=0; x<5; x++) {
    digitalWrite(pedGreen, HIGH);
    delay(250);
    digitalWrite(pedGreen, LOW);
    delay(250);
  }
  // turn pedRed on
  digitalWrite(pedRed, HIGH);
  delay(2000);
  digitalWrite(carYellow, HIGH); // carYellow on
 
  delay(2000);
  digitalWrite(carRed, LOW); // carRed off
  digitalWrite(carGreen, HIGH); //carGreen on
  digitalWrite(carYellow, LOW); // carYellow off
  // record the time since last change of lights
  changeTime = millis();

}
Conexiunea shield - board

Fiecare linie de program are un comentariu care arata ce face linia respectiva. Un exercitiu de aplicare a ceea ce a fost prezentat este adaugarea memorarii apasarii butonului in intervalul de 2 minute.

luni, 5 decembrie 2011

Noi sectiuni ale blogului

Se pare ca timpul este o problema destul de mare (atat pentru proiectele cat si pentru fotografierea pasilor), asa ca intre postari despre Arduino si electronica, voi introduce noi sectiuni marcate prin etichete corespunzatoare. Postarile nu vor mai fi urcate regulat ca pana acum, dar se va pastra ora 21:21 ca ora de postare. Noile sectiuni vor fi:
  • Unde sa mergem? - evenimente din Bucuresti sau diferite locatii din tara sau din strainatate
  • Ce am mai citit? - carti pe care le-am citit mai mult sau mai putin tehnice
  • Ce am mai vazut? - filme, spectacole, clipuri etc. 
  • Ce a mai aparut? - ultimile versiuni care au aparut a diverselor (telefoane, OS, programe)

Rammstein - Mein Land


Rammstein - Mein Land from Rammstein on Vimeo.


Probabil cel mai recent clip lansat de Rammstein.
Enjoy! \m/