Documente Academic
Documente Profesional
Documente Cultură
A. Componente:
U1 1 Arduino Uno R3
B. Schema:
C. Codul:
// Laborator 10b
// include biblioteca servomotorului
#include <Servo.h>
// include biblioteca pentru benzi LED inteligente
#include <Adafruit_NeoPixel.h>
// se defineste pinul 4 ca iesire pentru banda LED
#define pinLED 4
// se defineste numarul de LED-uri din banda
#define numLED 10
// se creeaza obiectul pentru controlul seervomotorului
Servo servoValva;
// se creeeaza o instanta a benzii de LED-uri
Adafruit_NeoPixel bandaLED = Adafruit_NeoPixel(numLED, pinLED, NEO_GRB + NEO_KHZ800);
void setup() {
// initializeaza biblioteca Neopixel
bandaLED.begin();
servoValva.attach(10);
/* Serial.begin(9600); interfata seriala se foloseste in faza de test al codului pentru
afisarea unor valori */
}
void loop() {
// citeste umiditatea
int valUmid = analogRead(A0);
// determina numarul de LED-uri care se aprind
int nLED =map(valUmid,0,876,0,9);
// seteaza culoarea LED-urilor functie de valoarea citita: uscat = rosu, umed = albastru
int valBlue = map(valUmid,0, 876,0,255);
int valRed = map(valUmid,0,876,255,0);
int pozValva = map(valUmid,0,876,255,0);
// seteaza LED-urile care se aprind si culoarea acestora
for (int i=0;i<=nLED;i++) {
bandaLED.setPixelColor(i,valRed,0,valBlue);
}
// trimite informatia la banda de LED-uri pentru afisare
bandaLED.show();
// actioneaza servomotorul robinetului de apa
servoValva.write(pozValva);
// Serial.println(pozValva);
delay(100);
bandaLED.clear();
}
D. Funcționare:
1. Sol uscat: un LED aprins în culoarea roșie + robinet apă complet deschis
2. Sol mediu: mai multe LED-uri aprinse în culoarea magenta + robinet apă deschis parțial
3. Sol umed: toate LED-urile aprinse în culoarea albastră + robinet de apă complet închis