marian_valcea Posted April 2, 2020 Share Posted April 2, 2020 Buna ziua m-am apucat sa fac si eu un sketch pentru arduino pro mini pentru a alimenta pe timpul nopti cateva leduri. Am gandito in felul urmator: Am un panou fotovoltaic cu care incarc prin intermediul unui regulator pwm un acumulator de 12V 10Ah, in momentul cand se intuneca regulatoru imi da cei 12v catre arduino dar afara inca mai este putina lumina si el imi aprinde ledurile folosind pwm undeva la 10% in momentul in care se misca cineva prin fata senzorului pir ledurile se aprind 100% pwm. Eu as vrea ca in momentul in care regulatorul pwm imi da tensiune catre arduino aceasta sa imi dea semnal pwm la leduri dupa un timp de 1 ora nu imediat si dupa ce detecteaza senzorul pir miscare iarasi as vrea sa fie ceva de genul pwm 10% tot timpul cat nu detecteaza pe nimeni si in momentul in care detecteaza pe cineva pwm sa fie 100% timp de 40 secunde dupa care sa revina la 10%. Aici m-am impodmolit cu programul am incercat eu ceva dar nu am reusit ma puteti ajuta? Link to comment
mihaicozac Posted April 2, 2020 Share Posted April 2, 2020 Cu ani în urmă am realizat o comandă pt. luminile de afară, numărul de la casă şi cele perimetrale, folosind un Pro Mini şi o fotorezistenţă pe post de detector de lumină. La lăsarea întunericului se aprinde treptat numărul, apoi dacă se primeşte semnal de la unul din senzorii IR pornesc şi luminile mari, care apoi se sting progresiv după un timp de aşteptare. Poate te ajută programul meu, ar fi câteva modificări mici de făcut la valori. int IR2 = 2; int IR3 = 3; int IR4 = 4; int IR5 = 5; int counter; int lightValue; int dawn = 9; int pwm = 10; int dawnValue = 0; int pwmValue = 16; int IR = 0; int light = 0; void setup() { pinMode(IR2, INPUT); pinMode(IR3, INPUT); pinMode(IR4, INPUT); pinMode(IR5, INPUT); counter = 0; } void loop(){ IR = (digitalRead(IR2) || digitalRead(IR3) || digitalRead(IR4) || digitalRead(IR5)); lightValue = analogRead(A0); if(lightValue < 68) {light = 1;} else if(lightValue > 96) {light = 0;} if(light) {dawnValue += 8; if(counter) {pwmValue +=32;} else {pwmValue -= 8;} pwmValue = constrain(pwmValue, 16, 255); } else {dawnValue = 0; pwmValue = 0; counter = 0;} dawnValue = constrain(dawnValue, 0, 255); if(IR) {counter = 240;} counter --; if(counter <= 0) {counter = 0;} analogWrite(dawn, dawnValue); analogWrite(pwm, pwmValue); delay(50); } Link to comment
Bandi Szasz Posted April 2, 2020 Share Posted April 2, 2020 (edited) Salut, La primul bloc unde doresti intarziere de 60minute pui un "delay((uint32_t)3600000);" stergi ultima linie din "void setup()" si anume "unsigned long intarziere" ca nu e nevoie de el si unde vrei intarzierea de 40s in loc de "delay(intarziere )" pui "delay((uint32_t)40000);" Poate ar fi mai bine un senzor de lumina (fotorezistenta) a carui valoare sa o citesti cu Arduino sa de acolo sa reglezi cand vrei sa porneasca (cat de intunecat sa fie afara), vara dureaza mai mult pana se face bezna decat iarna cand tranzitia e mult mai brusca si poate acel delay de 60 este prea mult. Edited April 2, 2020 by Bandi Szasz Link to comment
marian_valcea Posted April 2, 2020 Author Share Posted April 2, 2020 Citat Poate ar fi mai bine un senzor de lumina (fotorezistenta) a carui valoare sa o citesti cu Arduino sa de acolo sa reglezi cand vrei sa porneasca (cat de intunecat sa fie afara), vara dureaza mai mult pana se face bezna decat iarna cand tranzitia e mult mai brusca si poate acel delay de 60 este prea mult. Tocmai de aceea ma folosesc de regulatorul de incarcare in functie de lumina de afara imi alimenteaza sau nu montajul cu arduino. Dar seara il alimenteaza umpic cam devreme. Inca o intrebare mai am ca nu prea ma pricep uint32_t ce anume inseamna? M-am uitat in pdf de mai jos care cred eu ca este destul de ajutor si nu mi-am dat seama. Arduino Cheat Sheet.pdf Link to comment
mihaicozac Posted April 2, 2020 Share Posted April 2, 2020 (edited) Înseamnă unsigned integer pe 32 biţi, în Arduino corespunde la "unsigned long". !Int" are doar 16 biţi. Edited April 2, 2020 by mihaicozac Link to comment
marian_valcea Posted April 5, 2020 Author Share Posted April 5, 2020 Multumesc pentru linile de cod a mers. O zi buna! Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now