luni, 21 noiembrie 2016

Senzor distanta ultrasunete cu afisaj LCD 16x2 alb-albastru


Experiment realizat de "Ziua Stafetei". "Ziua Stafetei" s-a desfasurat in perioada 15-25 Noiembrie 2016 si a incurajat copii si tineri din intreaga tara sa preia meseria mult visata pentru o zi, solicitand totodata adultilor sa-i ajute in acest demers, in calitate de coordonatori de grup, mentori si insotitori. Am aratat unor copii care doreau sa se faca programatori si o alta ramura mult mai interesanta a programarii, respectiv cea a programarii robotilor.

luni, 29 februarie 2016

Sonerie scoala cu LCD 20x2 Raystar RC2402A-BIY-CSV




La fiecare inceput de ora de curs si la fiecare inceput de pauza se aprinde ledul de pe pinul 13 si un releu actioneasa pentru cateva secunde soneria scolii. In afara programului de scoala si in zilele de sambata si duminica soneria nu este actionata.

luni, 29 aprilie 2013

Comanda motor de HDD (pas cu pas) din tastatura

Pentru conectarea motorului la placa de dezvoltare Arduino Uno a fost folosita schema de aici http://e-robot-x.blogspot.ro/p/electronica_17.html .
Alimentarea poate fi separata sau se poate folosi tensiunea de 3,3V de pe placa asa cum am folosit eu in filmuletul postat, depinde de motorul folosit.


Cod:

//comanda motor pas cu pas de la tastatura  *Adi Ivan*
//apasa  „+„ pentru rotire dreapta LED pin 13 aprins,apasa „ –„ pentru rotire stanga LED pin 13 stins, apasa „0„ pentru STOP si LED pin 13 va clipi intermitent

int incomingByte = 0;                                    //pentru intrare serial data
int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 64;

void setup() {
                Serial.begin(9600);                     // deschidere port serial si setare rata de transfer a datelor la 9600 bps

//seteaza iesirea
  pinMode(13, OUTPUT);
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}

void loop() {

                // trimite date doar cand primeste date de la tastatura:
                if (Serial.available() > 0) {
                // citeste numarul introdus de la tastatura:
                incomingByte = Serial.read();

                // afiseaza in Serial Monitor numarul introdus:
                Serial.print("S-a tastat: ");
                Serial.println(incomingByte - 48, DEC); //S-a scazut 48 pentru a afisa in Serial Monitor exact numarul tastat (a se vedea codul ASCII)
                }
if(incomingByte==45)                                   //stinge LED-ul conectat la pinul 13. (- este 45 in cod ASCII) si roteste motorul spre stanga
{
  digitalWrite(13, LOW);                              // stinge LED-ul conectat la pinul 13
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
 }
if(incomingByte==43)                                   //aprinde LED-ul conectat la pinul 13. (+ este 43 in cod ASCII) si roteste motorul spre dreapta
{
  digitalWrite(13, HIGH);                               // aprinde LED-ul conectat la pinul 13
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
 }

if(incomingByte==48)                                   //aprinde intermitent LED-ul conectat la pinul 13. (0 este 48 in cod ASCII) si opreste motorul
{
  digitalWrite(13, HIGH);                               // aprinde LED-ul conectat la pinul 13
  delay(500);                                                  // asteapta 0,5 secunde
  digitalWrite(13, LOW);                               // stingeLED-ul conectat la pinul 13
  delay(500);                                                  // asteapta 0,5 secunde

  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
 }

}

Semnificatie culori:

Rosu - instructiuni pentru motor
Verde -  instructiuni pentru LED-ul conectat la pin 13 Arduino Uno
Alb - instructiuni preluare comenzi de la serial monitor si restul codului incarcat