Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:avaduva:atoader [2024/05/18 03:01]
atoader
pm:prj2024:avaduva:atoader [2024/05/26 23:51] (current)
atoader
Line 59: Line 59:
  
 {{pm/​prj2024/​avaduva/​vita_nu_sobolan_da.jpg|}} {{pm/​prj2024/​avaduva/​vita_nu_sobolan_da.jpg|}}
 +
 +P.S. Nu se vede pe POZA, dar merge si motorul, doar senzorul nu l-am testat efectiv, adica, cum ar, veni, am facut si in plus (:
  
  
Line 68: Line 70:
 <note tip> <note tip>
 Descrierea codului aplicaţiei (firmware): Descrierea codului aplicaţiei (firmware):
-  * mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR) +  * mediu de dezvoltare: Arduino 
-  * librării şi surse 3rd-party ​(e.gProcyon AVRlib) +  * librării şi surse 3rd-party: Stepper.h,, LiquidCrystal.h, TimerOne1.h,​ Adafruit_VEML7700.h:​ https://​github.com/​adafruit/​Adafruit_VEML7700 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +  * Se misca panoul stanga, dreapta pana gaseste o sursa de lumina de minim 700lux
-  * (etapa 3) surse şi funcţii implementate+
 </​note>​ </​note>​
  
Line 77: Line 78:
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+    Panoul, desi haotic ish, reuseste sa gaseasca mereu blitz-ul telefonului si sa fie centrat pe el.
 </​note>​ </​note>​
 +Demo: https://​youtu.be/​LmnLLlTDUFg
 +
  
 ===== Concluzii ===== ===== Concluzii =====
 +Desi arata horror, macar face cat de cat ce trebuie.
 +Ar putea fi folosit efectiv in practica? NU!
 +Se misca mult prea haotic pentru ceva ce ar cantarii sute de kg, dar pt 20g ale mele, functioneaza macar...
 +
 +codul:
 +Declararea componentelor,​ global de ce ma-ntrebi:
 +<​code>​
 +int stepsPerRevolution = 2048;
 +int motSpeed = 10;
 +Stepper myStepper(stepsPerRevolution,​ 8, 10, 9, 11);
 +LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
 +Adafruit_VEML7700 veml;
 +</​code>​
 +
 +Partea de begin, practic initializarea a ceea ce voi folosi:
 +<​code>​
 +Serial.begin(9600);​
 +  myStepper.setSpeed(motSpeed);​
 +  lcd.begin(16,​2);​
 +  if (veml.begin()) {
 +    Serial.println("​Found a VEML7700 sensor"​);​
 +  } else {
 +    Serial.println("​No sensor found ... check your wiring?"​);​
 +    while (1);
 +  }
 +  veml.setGain(VEML7700_GAIN_1);​
 +  veml.setIntegrationTime(VEML7700_IT_100MS);​
 +  Timer1.initialize(10000000);  ​
 +  Timer1.attachInterrupt(checkADC); ​   ​
 +</​code>​
 +
 +Partea de loop:
 +<​code>​
 +void loop() {
 +  int code = look_for_better_sunlight();​
 +  if(code == 10000) {
 +    lcd.clear();​
 +    int lux = veml.readLux();​
 +    while(lux > 700) {
 +      lux = veml.readLux();​
 +      float W = 220.0 * lux / 700;
 +      lcd.clear();​
 +      lcd.setCursor(0,​0);​
 +      lcd.print("​Lux:​ " + String(lux) + " KW: " + String(W));
 +      lcd.setCursor(0,​1);​
 +      lcd.print("​Sunlight is good"​);​
 +    }
 +  }
 +}
 +</​code>​
 +
 +Functia care efectiv imi gaseste lumina:
 +
 +<​code>​
 +int look_for_better_sunlight() {
 +  int lux = veml.readLux();​
 +  float W = 220.0 * lux / 700;
 +  lcd.clear();​
 +  lcd.setCursor(0,​0);​
 +  lcd.print("​Bad sunlight"​);​
 +  lcd.setCursor(0,​1);​
 +  lcd.print("​Lux:​ " + String(lux) + " KW: " + String(W));
 +  int current_steps = 0;
 +  while (lux < 700) {
 +    current_steps = 0;
 +    while(current_steps < stepsPerRevolution/​2) {
 +      int lux_ant = lux;
 +      myStepper.step(stepsPerRevolution/​64);​
 +      current_steps += stepsPerRevolution/​64;​
 +      lux = veml.readLux();​
 +      float W = 220.0 * lux / 700;
 +      lcd.setCursor(0,​1);​
 +      lcd.print("​Lux:​ " + String(lux) + " KW: " + String(W));
 +      if (lux > 700) {
 +        Serial.println("​boss1"​);​
 +        return 10000;
 +      }
 +      if(lux < lux_ant) {
 +        break;
 +      }
 +      delay(100);
 +    }
 +    while (current_steps > -stepsPerRevolution/​2) {
 +      int lux_ant = lux;
 +      myStepper.step(-stepsPerRevolution/​64);​
 +      current_steps -= stepsPerRevolution/​64;​
 +      lux = veml.readLux();​
 +      float W = 220.0 * lux / 700;
 +      lcd.setCursor(0,​1);​
 +      lcd.print("​Lux:​ " + String(lux) + " KW: " + String(W));
 +      if (lux > 700) {
 +        Serial.println("​boss2"​);​
 +        return 10000;
 +      }
 +      if (lux < lux_ant) {
 +        break;
 +      }
 +      delay(100);
 +    }
 +  }
 +}
 +</​code>​
 +
 +Intreruperea ce genereaza un timer de 10 secunde, ce afiseaza pe LCD "ora noua", in sensul ca dupa mintea lui a trecut o ora(daca l-as lasa chiar o ora n-as mai avea ce arata la demo)
 +
 +<​code>​
 +void checkADC() {
 +  customInterrupt();​
 +}
 +
 +void customInterrupt() {
 +  lcd.setCursor(0,​0);​
 +  lcd.print("​Ora noua?"​);​
 +  delay(1000);​
 +}
 +</​code>​
  
 ===== Download ===== ===== Download =====
  
 <note warning> <note warning>
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +{{pm:prj2024:avaduva:alextoaderproiect.zip|}}
- +
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**.+
 </​note>​ </​note>​
  
Line 93: Line 210:
  
 <note tip> <note tip>
-Puteți avea și o secțiune ​de jurnal în care să poată urmări asistentul ​de proiect progresul proiectului.+In toate zilele inafara ​de azi am facut tema la IA. De m-as putea intoarce in timp as schimba nenorocirea aia de materie cu orice altceva, materia e draguta dar nivelul de munca e la alt nivel...
 </​note>​ </​note>​
  
Line 99: Line 216:
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+Tutorial pentru Stepper ca la prosti: https://​www.youtube.com/​watch?​v=CEz1EeDlpbs&​list=PLGs0VKk2DiYw-L-RibttcvK-WBZm8WLEP&​index=35&​ab_channel=PaulMcWhorter 
 +Tutorial pentru LCD ca la prosti: https://​www.youtube.com/​watch?​v=4BaDaGTUgIY&​list=PLGs0VKk2DiYw-L-RibttcvK-WBZm8WLEP&​index=48&​ab_channel=PaulMcWhorter 
 +Github-ul cu biblioteca si tutorial pentru senzorul de lumina: https://​github.com/​adafruit/​Adafruit_VEML7700
 </​note>​ </​note>​
  
pm/prj2024/avaduva/atoader.1715990493.txt.gz · Last modified: 2024/05/18 03:01 by atoader
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0