joi, 3 martie 2011

Arduino si Masini ierarhice de stare

Arduino si Masini ierarhice de stare

Acum cateva zile au aparut noi versiuni ale programelor de la Quantum Leaps, firma care furnizeaza un framework Open Source si un mediu grafic gratuit pentru dezvoltarea de masini de stare si producerea de cod specific unei multitudini de familii si arhitecturi de microcontrolere. Vestea buna este ca acum exista inclusiv pentru Arduino si mbed.

Versiunea de framework pentru Arduino o gasiti aici. Se integreaza in IDE-ul Arduino si are doua exemple foarte bine documentate. Acelasi lucru se poate spune si despre Application Note specific mediului Arduino, asa ca nu ma mai chinui sa repovestesc instalarea si utilizarea.

Instrumentul grafic de dezvoltare, care porneste de la diagrame si scrie sketch-ul .pde pentru Arduino, il gasiti aici. Exista versiuni gratuite atat pentru Windows, cat si pentru Linux :)

La modul general, pentru cei care doresc sa stie ce este o masina ierarhica de stare si cum difera de automatele finite (masini cu un numar finit de stari), aici gasiti o foarte buna explicatie.

De ce este nevoie de o masina cu stari?

Modelul de programare utilizand masini de stari prezinta o serie de beneficii prin comparatie atat cu programarea "clasica" cu control secvential al executiei (bazata pe blocarea si scanarea dupa un anumit eveniment), cat si cu utilizarea unui RTOS sau Sistem de Operare in Timp Real care asteapta dupa un semafor sau o alta metoda specifica RTOS.

Avantajul apare in situatiile in care un numar de evenimente diferite se pot produce in situatii in care ordinea aparitiei lor nu poate fi determinata si in care este important raspunsul imediat al sistemului la eveniment.

Daca exista interes pentru acest subiect voi face un tutorial, care va fi probabil publicat pe Tehnorama.

miercuri, 2 martie 2011

Curatenia de primavara

Curatenia de primavara

[Edit - 12 aprilie 2011] Din lipsa de timp am amanat "schimbarea" de mai jos...

Incepand de astazi pe acest blog voi posta doar informatii referitoare la Arduino.

Toate informatiile referitoare la celelalte familii si arhitecturi de microcontrolere vor trece pe noul Wiki, Lumea Microcontrolerelor.

M-am hotarat sa fac acest lucru din mai multe motive:
- pare mai normal ca un blog numit "Arduino in Romania" sa fie doar despre Arduino ;-)
- blogul s-a aglomerat cu informatii prea diverse
- este mult mai usor si mai logic de structurat informatiile cu un Wiki decat cu un blog
- articolul din care aflam ca "Arduino a invins", mentionat in postarea Pagina Make despre Arduino, mi-a dat foarte mult de gandit ;-)

Acum intrebarea se pune astfel: "Bun... a invins... si acum ce facem mai departe?".
Dupa parerea mea apar mai multe variante posibile de raspuns. Sa le luam pe rand:

- in cazul in care suntem la inceput cu microcontrolerele si tot ceea ce ne dorim este sa invatam sa lucram si sa facem mici montaje/automatizari/robotei ramanem in continuare doar cu Arduino si ne este mai mult decat suficent

- daca dorim sa patrundem mai adanc in aceasta fascinanta lume a microcontrolerelor sau daca ne intereseaza performanta putem trece la alte familii, eventual pe mai multi biti, in functie de tot soiul de criterii (pret, disponibilitate, usurinta invatarii unui alt limbaj etc.)

- varianta a treia este cea pe care am ales-o pentru mine: nu ne impiedica nimic sa folosim diferite microcontrolere, in functie de scopul urmarit si de situatia la un anumit moment dat, inclusiv Arduino pentru dezvoltare rapida :)

vineri, 25 februarie 2011

O versiune noua de Fritzing

A aparut de cateva zile o noua versiune de Fritzing, programul open-source de design care pare sa fi ajuns un standard pentru designul si documentarea proiectelor Arduino.

Din ce am vazut in ultima vreme este folosit, printre altele, in carti ("Beginning Arduino" de Michael McRoberts), reviste ("Servo" si "Nuts & Volts") si pe site-ul oficial Arduino.

vineri, 18 februarie 2011

Cum se taie placile LPCXpresso

Placile LPCXpresso cu LPC1114, 1343, 1768 si 1769 sunt compuse din doua parti, ce pot functiona si separat: LPC-LINK JTAG/SWD debugger si Integrated evaluation target.

Cele doua parti arata astfel in LPCXpresso Getting Started Manual (pdf from NXP)

Schema conform Board Schematics (in pdf) arata ca mai jos


Cele doua parti, dupa ce au fost separate, functioneaza dupa cum se arata in manualul de mai sus.

Mai multe imagini despre cum s-a taiat o placa LPCXpresso gasim aici.

joi, 17 februarie 2011

Pagina Make despre Arduino

O pagina interesanta, de la Make, plina de proiecte, tutoriale, videouri etc.
Make: Arduino - Join the Arduino revolution

Tot aici este un articol interesant, din care aflam de ce "Arduino a invins" ;-)
Ar fi multe de comentat pe tema asta, mai ales ar fi de vazut ce facem mai departe... dar despre acestea intr-o postare "filozofica" viitoare.

miercuri, 16 februarie 2011

digitalWrite si analogWrite vazute cu osciloscopul

Daca tot aveam de mai bine de un an un mini-oscilosop la programatorul de la Pololu m-am gandit sa-l si incerc ;-)

Prima imagine arata semnalul de pe pinul digital 13 cu sketch-ul "Blink" (interval de o secunda)



void loop()
{
digitalWrite(ledPin, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(ledPin, LOW); // set the LED off
delay(1000); // wait for a second
}


Pentru a doua imagine am facut un mic montaj cu un LED pe pinul digital PWM 9 si un potentiometru pe pinul analog IN 5. Imaginea arata cum valoarea citita de la potentiometru (impartita la 4) este scrisa la pinul cu LED.




void loop() {
sensorValue = analogRead(sensorPin);
analogWrite(ledPin, sensorValue / 4);
}


Pentru a fi mai clar am facut si un filmulet in timp ce invarteam potentiometrul de la minim la maxim si inapoi.

sâmbătă, 12 februarie 2011

Sa ne mai si distram ;-)

Doua benzi desenate pentru "geeks" (si nu numai...)

- xkcd
- Return to ZERO

Ambele sunt in limba engleza.