Publicat la data

Termometru UNO cu ceas și data – Sandu Ilie Cristian

Termometru cu ceas și data – Sandu Ilie Cristian

1      crystisandu3@gmail.com

Componente necesare :
    -I2C 16x2 LCD
    -DHT11 Temperature and humidity sensor
    -MH -Real-Time-Clock Modules - 2 
    -Arduino UNO

termometru-ceas-data-sandu-ilie-cristian-1
pin component -> pin placa
RTC
    VCC -> 5V
    GND -> GND
    CLK -> /6
    DAT -> 7
    RST -> 8

SENZOR TEMPERATURA

    DATA -> 4
    VCC -> 3,3V
    GND -> GND

DISPLAY

    GND -> GND
    VCC -> 5V
    SDA -> A4 
    SCL -> A5

//--------------------------------
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <dht.h>
#include <virtuabotixRTC.h>

dht DHT;
#define DHT11_PIN 4
int tmp;
int hum;

LiquidCrystal_I2C lcd (0x27, 2 ,1,0,4,5,6,7,3,POSITIVE);
virtuabotixRTC myRTC(6, 7, 8);

byte temp[] = {
 B00100,
 B01010,
 B01010,
 B01110,
 B01110,
 B11111,
 B11111,
 B01110
};

byte humi[] = {
 B00100,
 B00100,
 B01010,
 B01010,
 B10001,
 B10001,
 B10001,
 B01110
};


void setup(){
 lcd.begin(16,2);
 lcd.createChar(0, temp);
 lcd.createChar(1, humi);
 lcd.clear ();
 pinMode(4,INPUT);
 Serial.begin(9600);
}

void loop()
{
 int d = DHT.read11(DHT11_PIN);
 myRTC.updateTime();
 lcd.setCursor ( 0, 0 );// prima linie
 lcd.print(char(0));
 lcd.print(DHT.temperature);
 lcd.print("C");
 lcd.print(" ");
 lcd.print(char(1));
 lcd.print(DHT.humidity);
 lcd.print("%");
 lcd.setCursor ( 0, 1 );// a doua linie 
 lcd.print(myRTC.hours);
 lcd.print(":");
 lcd.print(myRTC.minutes);
 lcd.print(" ");
 lcd.print(myRTC.dayofmonth);
 lcd.print("/");
 lcd.print(myRTC.month);
 lcd.print("/");
 lcd.print(myRTC.year);
 
 delay(1000);
}
//--------------------------------
termometru-ceas-data-sandu-ilie-cristian-4
termometru-ceas-data-sandu-ilie-cristian-2
termometru-ceas-data-sandu-ilie-cristian-3
Publicat la data

Folosirea Motor Driver Shield L293D pentru Controlul Motoarelor DC, Stepper și Servo cu Arduino

Folosirea Motor Driver Shield L293D pentru Controlul Motoarelor DC, Stepper și servo cu Arduino

image1

Shieldul L293D Motor Driver & 74HC595 Shift Register

Poate comanda:
4 motoare cc bidirecționale cu selectare a vitezei pe 8 biți (0-255)
2 motoare pas cu pas (unipolare sau bipolare) interleaved
sau micro-stepping.
2 servomotoare

image2

L293D este un driver de motor H-Bridge dual-channel care poate comanda o pereche de motoare DC sau un motor pas cu pas.
Pentru că shieldul are două chipuri de L293D, aceasta înseamnă că poate comanda în mod individual până la patru motoare de curent continuu, ceea ce îl face ideal pentru construirea unei platforme robot cu patru roți. Poate livra până la 0,6A pe motor.
Are de asemenea, un registru de deplasare 74HC595 care extinde 4 pini digitali ai Arduino la cele 8 direcții de control ale celor două cipuri L293D.

Alimentarea

image3

Există trei feluri în care se pot alimenta motoarele prin intermediul shieldului.
O sursă de alimentare unică DC atât pentru Arduino cât și pentru motoare:
(dacă doriți să aveți o singură sursă de curent continuu atât pentru Arduino, cât și pentru motoare, conectați-o doar la mufa DC de pe arduino sau la blocul EXT_PWR cu 2 pini de pe shield. Jumperul de alimentare rămâne la locul lui. Puteți utiliza această metodă numai atunci când tensiunea de alimentare a motorului este mai mică de 9V.)
Sau (Recomandat) Arduino alimentat prin USB și motoarele printr-o sursă de curent continuu: (conectați cablul USB, conectați alimentarea de motoare la blocul EXT_PWR de pe shield. Asigurați-vă că jumperul este scos.)
Sau două surse de alimentare cu curent continuu, una pentru Arduino și alta pentru motoare: (dacă doriți să aveți 2 surse separate de alimentare DC pentru arduino și motoare. Conectați sursa de alimentare pentru Arduino în mufa DC și conectați alimentarea de motoare la EXT_PWR. Asigurați-vă că jumperul este scos.)

Shieldul mai are: o matrice de rezistoare pulldown pentru a menține motoarele oprite în timpul alimentării.
LED-ul de la bord indică faptul că alimentarea moto
arelor este în regulă. Dacă nu este aprins, motoarele nu vor funcționa.
Are și butonul de resetare al lui Arduino.

AVERTIZARE
NU furnizați
tensiune la intrarea EXT_PWR atunci când jumperul este în shield. Poate deteriora shieldul și, de asemenea, Arduino!

Conexiuni de iesire

image4

Conexiunile de ieșire ale ambelor cipuri L293D sunt la marginea shieldului cu două terminale cu șurub cu 5 pini, M1, M2, M3 și M4. Puteți conecta la aceste terminale patru motoare de curent continuu cu tensiuni cuprinse între 4,5 și 24V.
Fiecare canal de pe modul poate furniza până la 600mA motorului DC.
Dar curentul furnizat la motor depinde și de sursa de alimentare a sistemului.
De asemenea, puteți conecta două motoare pas cu pas la bornele de ieșire. Un motor pas cu pas la motor M1-M2 și altul la M3-M4.
Terminalul GND este prevăzut
în situația în care aveți un motor pas cu pas unipolar.
Shieldul are și liniile de ieșire PWM de 16 biți pentru două servomotoare cu 3 pini.

Pinii nefolositi de la Arduino

Nu sunt utilizați Pinii digitali 2, 13 și pinii analogici A0-A5.

AFMotor Library

O gasiti pe: https://github.com/adafruit/Adafruit-Motor-Shield-library

Folosirea L293D Shield

Acum, că știm totul despre Shield, putem începe să o legăm la Arduino!
Începeți prin conectarea
shieldului în partea superioară a lui Arduino.

Acum conectați motorul la bornele motoarelor M1, M2, M3 sau M4. În exemplul nostru îl conectăm la M4.
Apoi, conectați alimentarea motoarelor. Deși puteți conecta motoarele de curent continuu cu tensiuni cuprinse între 4,5 și 2
4V la shield, în exemplul nostru folosim motoare DC de 9V. Deci, vom conecta sursa externă de alimentare de 9V la terminalul EXT_PWR.

image5

Exemplu de cod:

#include <AFMotor.h>

AF_DCMotor motor(4);

void setup() 
{
        //Set initial speed of the motor & stop
        motor.setSpeed(200);
        motor.run(RELEASE);
}

void loop() 
{
        uint8_t i;

        // Turn on motor
        motor.run(FORWARD);
        
        // Accelerate from zero to maximum speed
        for (i=0; i<255; i++) 
        {
                motor.setSpeed(i);  
                delay(10);
        }
        
        // Decelerate from maximum speed to zero
        for (i=255; i!=0; i--) 
        {
                motor.setSpeed(i);  
                delay(10);
        }

        // Now change motor direction
        motor.run(BACKWARD);
        
        // Accelerate from zero to maximum speed
        for (i=0; i<255; i++) 
        {
                motor.setSpeed(i);  
                delay(10);
        }

        // Decelerate from maximum speed to zero
        for (i=255; i!=0; i--) 
        {
                motor.setSpeed(i);  
                delay(10);
        }

        // Now turn off motor
        motor.run(RELEASE);
        delay(1000);
}

Explicatie:

Codul începe prin includerea AFMotor.h.
AF_DCMotor (motorPort #);

Trebuie să declaram numărul portului la care este conectat motorul. Pentru portul M1 scrieți 1, pentru M2 scrieți 2 și așa mai departe.
Dacă doriți să conectați mai multe motoare ,
declarați separat pentru fiecare motor. De exemplu, următorul fragment de cod creează două AFmotor.

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

În Setup, pur și simplu setam turația de rotire.
Funcția setSpeed (viteză) stabilește viteza motorului. Viteza variază de la 0 la 255, cu 0 fiind oprit și 255 ca accelerație maximă.

Puteți seta viteza ori de câte ori doriți în cod.
Funcția Run (cmd) stabilește modul de funcționare al motorului.

Valorile valide pentru comandă sunt:
FORWARD – derulat înainte (direcția actuală de rotație va depinde de cablarea motorului)
BACKWARD – rulați înapoi (rotirea va fi în direcția opusă față de FORWARD)
RELEASE – Opriți motorul. Aceasta elimină puterea de la motor și este echivalentă cu setSpeed (0).

Pentru motorul stepper unipolar 28BYJ-48

Dacă utilizați motorul stepper unipolar 28BYJ-48, motorul respectiv se alimenteaza la 5V și oferă 48 de pași pe revoluție. Deci, conectați alimentarea externă de 5V la terminalul EXT_PWR.
Nu uitați să scoateți jumperul PWR. Acum conectați motorul la terminalele motorului pas cu pas M1-M2 (port # 1) sau M3-M4 (port # 2). În ex
emplul nostru îl conectăm la M3-M4.

image6

Pentru NEMA 17 bipolar stepper

Dacă utilizați motorul bipolar NEMA 17, de obicei alimentat la 12V și oferă 200 de pași pe revoluție. Deci, conectați sursa externă de alimentare de 12V la terminalul EXT_PWR.
Nu uitați să scoateți jumperul PWR.
Acum conectați motorul la terminalele motorului pas cu pas M1-M2 (port # 1) sau M3-M4 (port # 2). În
exemplul nostru îl conectăm la M3-M4.

image7

Arduino Code

Următorul cod vă va oferi o înțelegere completă cu privire la modul de control al unui motor stepper unipolar sau bipolar cu shieldul L293D și este același pentru ambele motoare, cu excepția parametrului stepsPerRevolution.
Modificați acest parametru conform specificațiilor motorului înainte de a încerca schița. De exemplu, pentru NEMA 17 setați-l la 200 și pentru 28BYJ-48 setați-l la 48.

Exemplu cod:

#include <AFMotor.h>

// Number of steps per output rotation
// Change this as per your motor's specification
const int stepsPerRevolution = 48;

// connect motor to port #2 (M3 and M4)
AF_Stepper motor(stepsPerRevolution, 2);

void setup() {
  Serial.begin(9600);
  Serial.println("Stepper test!");

  motor.setSpeed(10);  // 10 rpm   
}

void loop() {
  Serial.println("Single coil steps");
  motor.step(100, FORWARD, SINGLE); 
  motor.step(100, BACKWARD, SINGLE); 

  Serial.println("Double coil steps");
  motor.step(100, FORWARD, DOUBLE); 
  motor.step(100, BACKWARD, DOUBLE);

  Serial.println("Interleave coil steps");
  motor.step(100, FORWARD, INTERLEAVE); 
  motor.step(100, BACKWARD, INTERLEAVE); 

  Serial.println("Micrsostep steps");
  motor.step(100, FORWARD, MICROSTEP); 
  motor.step(100, BACKWARD, MICROSTEP); 
}

Explicatie:

Codul începe prin includerea bibliotecii AFMotor.h.
Al doilea motor AF_Stepper (48, 2); creează un obiect al bibliotecii. Aici trebuie să
declarați pașii per revoluție ai motorului și numărului portului la care este conectat motorul ca parametri.
În secțiunea de configurare și buclă a codului, pur și simplu sunăm sub două funcții pentru a controla direcția de turație și de rotire a unui motor.
Funcția setSpeed ​​(rpm) stabilește viteza motorului, în cazul în care rpm este numărul de rotații pe minut dorit.
Funcția step (pasi, direcție, tipul pasilor) este apelată de fiecare dată când doriți să se miște motorul. #step este numărul de pași pe care doriți să îi urmați. direcția este FORWARD sau BACKWARD, iar valorile valide pentru tipul pasului sunt:
SINGLE – o singură bobină este energizată la un moment dat.
DOUBLE – Două bobine sunt alimentate la un moment dat pentru un cuplu mai mare.
INTERLEAVE – alternați între unic și dublu pentru a crea o jumătate de pas între ele. Acest lucru poate duce la o funcționare mai ușoară, dar din cauza jumătății suplimentare, viteza este redusă la jumătate.
MICROSTEP –
Pentru a crea un număr de „micro-pași” între fiecare pas complet. Acest lucru are ca rezultat o rezoluție mai fină și rotație mai ușoară, dar cu o pierdere de cuplu.

Comanda Servo Motors cu L293D Shield

Comanda servo cu L293D este la fel de simplă.
Shieldul are ieșire PWM de 16 biți pentru două servomotoare cu 3 pini.

Pinii 9 și 10 de la Arduino.
Puterea servo vine de la regulatorul de 5 V de la Arduino, deci nu trebuie să conectați nimic la terminalul EXT_PWR.

image8

Exemplu cod:

#include <Servo.h> Servo myservo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { // attaches the servo on pin 10 (or pin 9) to the servo object myservo.attach(10); } void loop() { // sweeps from 0 degrees to 180 degrees for(pos = 0; pos <= 180; pos += 1) { myservo.write(pos); delay(15); } // sweeps from 180 degrees to 0 degrees for(pos = 180; pos>=0; pos-=1) { myservo.write(pos); delay(15); } }

Succes!

Publicat la data

Cum sa controlezi doua motoare cu Arduino și să creezi un roboțel mașină

Cum sa controlezi doua motoare cu Arduino și să creezi un roboțel mașină controlat de Arduino

2-motors-circuit

Am folosit motoare DC la 9 volti, puteti folosi motoare DC de la 5v la 12v. Atentie mare la conectarea firelor.

Exemplu Cod :

void setup() {
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);

pinMode(6, OUTPUT);
pinMode(5, OUTPUT);

}

void loop() {
digitalWrite(11, HIGH);
digitalWrite(6, HIGH);

delay(1000); // Wait for 1000 millisecond(s)

digitalWrite(11, LOW);
digitalWrite(6, LOW);

delay(1000); // Wait for 1000 millisecond(s)

digitalWrite(10, HIGH);
digitalWrite(5, HIGH);

delay(1000); // Wait for 1000 millisecond(s)

digitalWrite(10, LOW);
digitalWrite(5, LOW);

delay(1000); // Wait for 1000 millisecond(s)

}

Publicat la data

Cum folosim senzorul soil (Soil Hygrometer Humidity)

Cum folosim senzorul soil (Soil Hygrometer Humidity)

Soil-Hygrometer-Humidity-Detection-Module-roboromania-fata

Sunt doua moduri de folosire

Este un proiect Arduino care necesită cunoştinţe medii în domeniu.

Senzor soil ieșire digitala și setam procentul de umiditate din trimmerul senzorului, exemplu:

arduino-soil-digital

Cod :

// varianta iesire digitala

int rel_pin = 10;
int sensor_pin = 2;

void setup() {
pinMode(rel_pin, OUTPUT);
pinMode(sensor_pin, INPUT);

}

void loop() {

if(digitalRead(sensor_pin) == HIGH){
digitalWrite(rel_pin, HIGH);
} else {
digitalWrite(rel_pin, LOW);
delay(1000);
}
}
// ––––––-

Atenție la declararea pinilor. Dacă copiați codul atenție la fonturi.

Senzor soil ieșire analogica și setam procentul de umiditate din trimmerul senzorului, exemplu:

arduino-soil-analog

Cod :

// varianta iesire analogica
int rel_pin = 10;
int sensor_pin = A0;

int output_value = 0;
int setup_value = 50; // se seteaza in cod intre 0% si 100%

void setup() {
Serial.begin(9600);
pinMode(rel_pin, OUTPUT);
digitalWrite(rel_pin, LOW);
}

void loop() {
output_value= analogRead(sensor_pin);

output_value = map(output_value,550,0,0,100);
Serial.print(„Mositure : „);
Serial.print(output_value);
Serial.println(„%”);
delay(1000);

if(output_value < setup_value){

digitalWrite(rel_pin, HIGH);
} else {
digitalWrite(rel_pin, LOW);
delay(1000);
}
}
//––––––-

Atenție la declararea pinilor. Dacă copiați codul atenție la fonturi.

E simplu, trebuie doar să fim atenți la conectarea pinilor, corespunzător sketch-ului Arduino folosit.
Dar puteți veni la sediul nostru și vă învățăm noi cat putem … vă ajutăm și la montaj …

Colectivul magazinului roboromania.ro vă urează succes !  După realizare va rugam sa trimiteți poze și sugestii.

Publicat la data

Folosirea Senzorului detecție culoare TCS230 și Arduino la sortare

Folosirea Senzorului detecție culoare TCS230 și Arduino la sortarea obiectelor colorate

Detecția culorii RGB cu senzorul TCS230 și sortarea obiectelor colorate cu un Arduino NANO si doua servomotoare

arduino-color-sorting-machine

color-sorting-machine-arduino-project-solidworks-model

Uite și un cod pentru inspirație :

//–––––––––

#include <Servo.h>
#define S0 2
#define S1 3
#define S2 4
#define S3 5
#define sensorOut 6
Servo topServo;
Servo bottomServo;
int frequency = 0;
int color=0;
void setup() {
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(sensorOut, INPUT);
// Setting frequency-scaling to 20%
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
topServo.attach(7);
bottomServo.attach(8);
Serial.begin(9600);
}
void loop() {
topServo.write(115);
delay(500);

for(int i = 115; i > 65; i–) {
topServo.write(i);
delay(2);
}
delay(500);

color = readColor();
delay(10);
switch (color) {
case 1:
bottomServo.write(50);
break;
case 2:
bottomServo.write(75);
break;
case 3:
bottomServo.write(100);
break;
case 4:
bottomServo.write(125);
break;
case 5:
bottomServo.write(150);
break;
case 6:
bottomServo.write(175);
break;

case 0:
break;
}
delay(300);

for(int i = 65; i > 29; i–) {
topServo.write(i);
delay(2);
}
delay(200);

for(int i = 29; i < 115; i++) {
topServo.write(i);
delay(2);
}
color=0;
}
// Custom Function – readColor()
int readColor() {
// Setting red filtered photodiodes to be read
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int R = frequency;
// Printing the value on the serial monitor
Serial.print(„R= „);//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(” „);
delay(50);
// Setting Green filtered photodiodes to be read
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int G = frequency;
// Printing the value on the serial monitor
Serial.print(„G= „);//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(” „);
delay(50);
// Setting Blue filtered photodiodes to be read
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int B = frequency;
// Printing the value on the serial monitor
Serial.print(„B= „);//printing name
Serial.print(frequency);//printing RED color frequency
Serial.println(” „);
delay(50);
if(R<45 & R>32 & G<65 & G>55){
color = 1; // Red
}
if(G<55 & G>43 & B<47 &B>35){
color = 2; // Orange
}
if(R<53 & R>40 & G<53 & G>40){
color = 3; // Green
}
if(R<38 & R>24 & G<44 & G>30){
color = 4; // Yellow
}
if(R<56 & R>46 & G<65 & G>55){
color = 5; // Brown
}
if (G<58 & G>45 & B<40 &B>26){
color = 6; // Blue
}
return color;
}

//––––––––––––––

Mai multe detalii : Arduino Color Sorter Project

 

Publicat la data

Senzorul detecție culoare TCS230 și Arduino

Senzorul detecție culoare TCS230 și Arduino

Detecția culorii RGB cu senzorul TCS230 și afișarea pe un LCD

senzor-culoare-roboromania

arduino-color-detector

Cod:

//–––––––

/* Definire pini TCS230*/
#define S0 2 //SO pin to arduino D2 pin
#define S1 3 //S1 pin to arduino D3 pin
#define S2 4 //S2 pin to arduino D4 pin
#define S3 5 //S3 pin to arduino D5 pin
#define OP 6 //Output pin to arduino D6 pin

/*Initialling the value of variable to 0*/
int R = 0; //Initial value of RED Color is 0
int B = 0; //Initial value of BLUE Color is 0
int G = 0; //Initial value of GREEN Color is 0

unsigned int frequency1 = 0; //Initial frequency for RED is 0
unsigned int frequency2 = 0; //Initial frequency for BLUE is 0
unsigned int frequency3 = 0; //Initial frequency for GREEN is 0

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);//RS,EN,D4,D5,D6,D7

void setup()
{
lcd.begin(16, 2);
pinMode(S0, OUTPUT); //Assigning arduino pin D2 as output
pinMode(S1, OUTPUT); //Assigning arduino pin D3 as output
pinMode(S2, OUTPUT); //Assigning arduino pin D4 as output
pinMode(S3, OUTPUT); //Assigning arduino pin D5 as output
pinMode(OP, INPUT); //Assigning arduino pin D6 as input
/*Frequency is set for 20% so according to truth table
SO pin must be at high potential and S1 pin at low potential*/
digitalWrite(S0,HIGH); //Making arduino pin D2 HIGH (+5V)
digitalWrite(S1,LOW); //Making arduino pin D3 LOW (GND)
Serial.begin(9600);

lcd.setCursor(0,0);
lcd.print(„Arduino Color”);
lcd.setCursor(0,1);
lcd.print(” Detector „);
delay(2000);
lcd.clear();
}

void loop()
{
/*checking for red color*/
digitalWrite(S2,LOW); //Making arduino pin D4 LOW (GND)
digitalWrite(S3,LOW); //Making arduino pin D5 LOW (GND)
frequency1 = pulseIn(OP, LOW); //Reading frequency for RED using pulseIN function
Serial.print(„R=”);
Serial.println(frequency1); //Displaying frequency of RED on serial monitr
R = frequency1; //assigning value of Red frequiency to R
delay(50); // 50 milli seconds delay

/*checking for blue color*/
digitalWrite(S2,LOW);
digitalWrite(S3,HIGH);// setting for BLUE color sensor
frequency2 = pulseIn(OP, LOW);//Reading frequency for BLUE using pulseIN function
Serial.print(„B=”);
Serial.println(frequency2); //Displaying frequency of BLUE on serial monitr
B = frequency2; //assigning value of BLUE frequiency to B
delay(50); // 50 milli seconds delay

/*checking for green color*/
digitalWrite(S2,HIGH);
digitalWrite(S3,HIGH);// setting for GREEN color sensor
frequency3 = pulseIn(OP, LOW); //Reading frequency for GREEN using pulseIN function
Serial.print(„G=”);
Serial.println(frequency3); //Displaying frequency of GREEN on serial monitr
G = frequency3; //assigning value of GREEN frequiency to G
delay(50); // 50 milli seconds delay
Serial.println(„stop”);

/*Change the value of R, B and G with the value you have measured */

/*Checking for RED color if the value of R and G lies between below defined value
LCD display RED color*/
if(R<90 & R>45 & G<185 & G>130)
{
lcd.setCursor(0,0);
lcd.print(” RED „);
}

/*Checking for ORANGE color if the value of B and G lies between below defined value
LCD display ORANGE color*/
if(G<155 & G>120 & B<155 &B>115)
{
lcd.setCursor(0,0);
lcd.print(„ORANGE”);
}

/*Checking for GREEN color if the value of R and G lies between below defined value
LCD display GREEN color*/
if(R<150 & R>110 & G<160 & G>140)
{
lcd.setCursor(0,0);
lcd.print(” GREEN”);
}

/*Checking for YELLOW color if the value of R and G lies between below defined value
LCD display YELLOW color*/
if(R<80 & R>40 & G<120 & G>80)
{
lcd.setCursor(0,0);
lcd.print(„YELLOW”);
}

/*Checking for VOILET color if the value of R and G lies between below defined value
LCD display VOILET color*/
if(R<90 & R>60 & B<110 & B>75)
{
lcd.setCursor(0,0);
lcd.print(„VOILET”);
}

/*Checking for MAGENTA color if the value of R and G lies between below defined value
LCD display MAGENTA color*/
if(G<115 & G>80 & B<100 & B>50)
{
lcd.setCursor(0,0);
lcd.print(„MAGENTA”);
}

/*Checking for BLUE color if the value of B and G lies between below defined value
LCD display BLUE color*/
if (G<235 & G>165 & B<190 &B>110)
{
lcd.setCursor(0,0);
lcd.print(” BLUE „);
}

/*Checking for BLACK color if the value of B and G lies between below defined value
LCD display BLACK color*/
if (R<200 & R>150 & G<270 &G>210)
{
lcd.setCursor(0,0);
lcd.print(” BLACK „);
}
delay(2000); //2 second delay only for pause the screen
lcd.clear(); // Clear the screen
}

//–––––––––

Sau alt cod pentru SerialMonitor:

//–––––––––

int s0=3,s1=4,s2=5,s3=6,LED=8;
int flag=0;
int counter=0;
int countR=0,countG=0,countB=0;
void setup()
 {
 Serial.begin(9600);
 pinMode(s0,OUTPUT);
 pinMode(s1,OUTPUT); 
 pinMode(s2,OUTPUT);
 pinMode(s3,OUTPUT);
 digitalWrite(LED,HIGH);

 }
void TCS()
 {
   digitalWrite(s1,HIGH);
   digitalWrite(s0,LOW);
   flag=0;
   attachInterrupt(0, ISR_INTO, CHANGE);
   timer2_init();
 }
void ISR_INTO()
 {
   counter++;
 }
 void timer2_init(void)
 {
   TCCR2A=0x00;
   TCCR2B=0x07; 	
   TCNT2= 100;    	
   TIMSK2 = 0x01;	 
 }
 int i=0;
 ISR(TIMER2_OVF_vect)	
{
 TCNT2=100;
 flag++;
 if(flag==1)
  {
    counter=0;
  }
 else if(flag==2)
   {
    digitalWrite(s2,LOW);
    digitalWrite(s3,LOW); 
    countR=counter/1.051;
    Serial.print("red=");
    Serial.println(countR,DEC);
    digitalWrite(s2,HIGH);
    digitalWrite(s3,HIGH);   
   }
 else if(flag==3)
    {
     countG=counter/1.0157;
    Serial.print("green=");
    Serial.println(countG,DEC);
     digitalWrite(s2,LOW);
     digitalWrite(s3,HIGH); 
   
    }
 else if(flag==4)
    {
     countB=counter/1.114;
    Serial.print("blue=");
    Serial.println(countB,DEC);
     digitalWrite(s2,LOW);
     digitalWrite(s3,LOW);
     }
 else
     {
     flag=0; 
      TIMSK2 = 0x00;
     }
     counter=0;
     delay(2);
}
void loop()
 {
  delay(10);
  TCS();
  if((countR>10)||(countG>10)||(countB>10))
   {
      if((countR>countG)&&(countR>countB))
       {
            Serial.print("red");
            Serial.print("\n");
            delay(1000);
       }
      else if((countG>=countR)&&(countG>countB))
       {
            Serial.print("green");
            Serial.print("\n");
            delay(1000);
       } 
     else if((countB>countG)&&(countB>countR))
      {
            Serial.print("blue");
            Serial.print("\n");
           delay(1000);
      }
    }
  else 
  {
     delay(1000);       
  }
 }
//-----------------------
Publicat la data

Arduino Temperature and Humidity Clock from Anghelută Andrei

Arduino Temperature and Humidity Clock from Anghelută Andrei

facebook

andrei-alessandro-anghelutatemperature-and-humidity-clock

In this instructable,i will show you how to build a Temperature and humidity clock,using I2C lcd on the Arduino Nano.

Step 1 : Watch the Video

Step 2 : Buy the Components

1

For this,you will need:

I2C 16×2 LCD

DHT11 Temperature and humidity sensor

Arduino Nano

NOTE : You will need a usb Micro B cable to power the arduino

Step 3 : The Wiring

paint2

The display

SCL → A5

SDA → A4

GND → GND

VCC → 5V

Temperature sensor

OUT → D2

GND → GND

VCC → 5V

Step 4: The Code

You will need to download Arduino Software and open the sketch.

Here are the sketch

Step 5: The Case

Here are the 3D files for the case

After printing it,glue everything and you are done!

 

Publicat la data

Bluetooth – Folosire și conectare rapidă la Arduino

Bluetooth – Folosire și conectare rapidă la Arduino

Modulul Bluetooth HC-05 sau Bluetooth HC-06

Mai întâi conectăm modulul la Arduino, folosim o conectare serială virtuală ca să nu mai deconectăm modulul în momentul programării placii Arduino

images2

După conectare și alimentare ledul modulului începe să clipească

In cod apare :

#include <SoftwareSerial.h>  // nativa ID Arduino
SoftwareSerial blue_serial(9, 10); // RX, TX

Adică Serial virtual cu numele „blue_serial” (sau oricare nume doriți), pin RX de la modul la pin 9 Arduino, respectiv pin TX de la modul la pin 10 Arduino (sau oricare pini doriți).

Urmează să configurăm telefonul cu Android cu Modulul Bluetooth

In Setup telefon la Bluetooth -> Search for devices -> Available devices

android3

Apare HC-05 sau HC-06 si/sau device mac address

Selectați și faceți Pairing cu codul PIN 1234

android2

Dacă se conectează ledul modulului nu mai clipește și este gata de comunicare cu Arduino.

Acum la orice aplicație trebuie setată și corelată cu codul butoanele sau consola, pentru că pe serial se trimit în special „caractere”.

Succes!

Tutoriale Youtube :

How to control a LED using a bluetooth module

How to Pair HC-05 Bluetooth Modules

Atenție la declararea pinilor.

Acum mai trebuiește instalată și configurată aplicația pentru telefon în Google Play :

Arduino bluetooth controller

ikon

set-butoane

index