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

duminică, 9 octombrie 2011

Aprindere afisaj LED 7 segmente prin introducere de la tastatura din SERIAL MONITOR a nr 0 la 9


Platforma de dezvoltare folosita este Arduino Uno.
Codul permite sa aprinzi un afisaj LED 7 segmente prin introducere de la tastatura din SERIAL MONITOR a nr 0 la 9 si eventual litere.
Mai multe informatii despre codul ASCII aici: http://www.ascii-code.com/

Cod:
//aprindere afisaj LED 7 segmente prin introducere de la tastatura din SERIAL MONITOR a nr 0 la 9 *Adi Ivan*

int incomingByte = 0;     //pentru intrare serial data

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

//seteaza iesirile
  pinMode(2, OUTPUT); 
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);

//stinge afisajul
 digitalWrite(2, 1);
 digitalWrite(3, 1);
 digitalWrite(4, 1);
 digitalWrite(5, 1);
 digitalWrite(6, 1);
 digitalWrite(7, 1);
 digitalWrite(8, 1);
 digitalWrite(9, 1);
}

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==48)  //afisare 0. (0=48 in cod ASCII)
{
 digitalWrite(2, 0);
 digitalWrite(3, 0);
 digitalWrite(4, 0);
 digitalWrite(5, 0);
 digitalWrite(6, 0);
 digitalWrite(7, 0);
 digitalWrite(8, 1);
}

if(incomingByte==49)  // afisare 1. (1=49 in cod ASCII)
{
 digitalWrite(2, 1);
 digitalWrite(3, 0);
 digitalWrite(4, 0);
 digitalWrite(5, 1);
 digitalWrite(6, 1);
 digitalWrite(7, 1);
 digitalWrite(8, 1);
}

if(incomingByte==50)  // afisare 2. (2=50 in cod ASCII)
{
 digitalWrite(2, 0);
 digitalWrite(3, 0);
 digitalWrite(4, 1);
 digitalWrite(5, 0);
 digitalWrite(6, 0);
 digitalWrite(7, 1);
 digitalWrite(8, 0);
}

if(incomingByte==51)  // afisare 3. (3=51 in cod ASCII)
{
 digitalWrite(2, 0);
 digitalWrite(3, 0);
 digitalWrite(4, 0);
 digitalWrite(5, 0);
 digitalWrite(6, 1);
 digitalWrite(7, 1);
 digitalWrite(8, 0);
}

if(incomingByte==52)  // afisare 4. (4=52 in cod ASCII)
{
 digitalWrite(2, 1);
 digitalWrite(3, 0);
 digitalWrite(4, 0);
 digitalWrite(5, 1);
 digitalWrite(6, 1);
 digitalWrite(7, 0);
 digitalWrite(8, 0);
}

if(incomingByte==53)  // afisare 5. (5=53 in cod ASCII)
{
 digitalWrite(2, 0);
 digitalWrite(3, 1);
 digitalWrite(4, 0);
 digitalWrite(5, 0);
 digitalWrite(6, 1);
 digitalWrite(7, 0);
 digitalWrite(8, 0);
}

if(incomingByte==54)  // afisare 6. (6=54 in cod ASCII)
{
 digitalWrite(2, 0);
 digitalWrite(3, 1);
 digitalWrite(4, 0);
 digitalWrite(5, 0);
 digitalWrite(6, 0);
 digitalWrite(7, 0);
 digitalWrite(8, 0);
}

if(incomingByte==55)  // afisare 7. (7=55 in cod ASCII)
{
 digitalWrite(2, 0);
 digitalWrite(3, 0);
 digitalWrite(4, 0);
 digitalWrite(5, 1);
 digitalWrite(6, 1);
 digitalWrite(7, 1);
 digitalWrite(8, 1);
}

if(incomingByte==56)  // afisare 8. (8=56 in cod ASCII)
{
 digitalWrite(2, 0);
 digitalWrite(3, 0);
 digitalWrite(4, 0);
 digitalWrite(5, 0);
 digitalWrite(6, 0);
 digitalWrite(7, 0);
 digitalWrite(8, 0);
}

if(incomingByte==57)  // afisare 9. (9=57 in cod ASCII)
{
 digitalWrite(2, 0);
 digitalWrite(3, 0);
 digitalWrite(4, 0);
 digitalWrite(5, 0);
 digitalWrite(6, 1);
 digitalWrite(7, 0);
 digitalWrite(8, 0);
}

if(incomingByte==46)  //aprinde punctul. (.=46 in cod ASCII)
{
 digitalWrite(9, 0);
}

if(incomingByte==65)  // afisare A. (A=65 in cod ASCII)
{
 digitalWrite(2, 0);
 digitalWrite(3, 0);
 digitalWrite(4, 0);
 digitalWrite(5, 1);
 digitalWrite(6, 0);
 digitalWrite(7, 0);
 digitalWrite(8, 0);
}

if(incomingByte==32)  //stinge afisajul. (tasta Space=32 in cod ASCII)
{
 digitalWrite(2, 1);
 digitalWrite(3, 1);
 digitalWrite(4, 1);
 digitalWrite(5, 1);
 digitalWrite(6, 1);
 digitalWrite(7, 1);
 digitalWrite(8, 1);
 digitalWrite(9, 1);
}

}

luni, 19 septembrie 2011

Aprindere si stingere LED - Pin 13 prin introducere de la tastatura din SERIAL MONITOR a nr 1 si 0

Platforma de dezvoltare folosita este Arduino Uno.
Codul permite sa stingi si sa aprinzi LED ul de pe pinul 13 al placii de dezvoltare prin tastare in Serial Monitor a numerelor 1 si 0.

Cod:
//aprindere si stingere LED (Pin 13) prin introducere de la tastatura din SERIAL MONITOR a nr 0 si 1 *Adi Ivan*
int incomingByte = 0; //pentru intrare serial data
void setup() {
     Serial.begin(9600); // deschidere port serial si setare rata de transfer a datelor la 9600 bps
//seteaza iesirea
  pinMode(13, 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==48)  //stinge LED-ul conectat la pinul 13. (0=48 in cod ASCII)
{
 digitalWrite(13, LOW);
 }
if(incomingByte==49)  //aprinde LED-ul conectat la pinul 13. (1=49 in cod ASCII)
{
 digitalWrite(13, HIGH);
 }
}
***
Mai multe informatii despre codul ASCII aici: http://www.ascii-code.com/

sâmbătă, 30 iulie 2011

Efecte 5x7 matrix V2


Platforma de dezvoltare folosita este Arduino Uno.
Matricea LED 5x7 este de tipul kingbright TA07-11GWA Green

Codul poate fi pus la dispozitie in anumite conditii pentru cei interesati: adi_379@yahoo.com

Efecte 5x7 matrix V1

Platforma de dezvoltare folosita este Arduino Uno.
Matricea LED 5x7 este de tipul kingbright TA07-11GWA Green

Codul poate fi pus la dispozitie in anumite conditii pentru cei interesati: adi_379@yahoo.com

luni, 18 iulie 2011

Telecomanda 5x7 LED matrix V1

Platforma de dezvoltare folosita este Arduino Uno.
Senzorul IR folosit este recuperat de la un modulator FM auto cu telecomanda. Poate fi utilizata orice telecomanda modificand codul corespunzator butoanelor. Matricea LED 5x7 este de tipul kingbright TA07-11GWA Green

   
Codul poate fi pus la dispozitie in anumite conditii pentru cei interesati: adi_379@yahoo.com

Sharp GP2Y0A21YK Infrared Proximity Sensor. Test distanta cu LED RGB

Platforma de dezvoltare folosita este Arduino Uno.
Este primul pas in realizarea unui robot care ia decizia de a schimba directia de mers in functie de obstacolele intalnite.

Codul poate fi pus la dispozitie in anumite conditii pentru cei interesati: adi_379@yahoo.com