Jump to content
ELFORUM - Forumul electronistilor

Ajutor cod arduino pro mini


marian_valcea

Recommended Posts

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?

arduino.jpg

Link to comment
  • Replies 5
  • Created
  • Last Reply

Top Posters In This Topic

  • marian_valcea

    3

  • mihaicozac

    2

  • Bandi Szasz

    1

Popular Days

Top Posters In This Topic

Posted Images

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

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 by Bandi Szasz
Link to comment
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

Înseamnă unsigned integer pe 32 biţi, în Arduino corespunde la "unsigned long". !Int" are doar 16 biţi.

Edited by mihaicozac
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines