Skocz do zawartości
Komentator

Kurs Arduino - #4 - Przetwornik ADC

Pomocna odpowiedź

Po przeczytaniu jednej z części kursu o tworzeniu własnych funkcji postanowiłem zastosować zdobytą wiedzę aby skomplikować zadanie domowe z odcinka o ADC. Problem polega na tym iż po wpisaniu odpowiedniej liczby w monitor portu szeregowego program i tak wysyła wiadomość o błędzie , zapala się żółta dioda i zostaje odjęte jedno życie 😃

PS. Wszystkie części kursu są naprawdę świetnie napisane 😃

Udostępnij ten post


Link to post
Share on other sites

Dziękuje za tak szybką diagnozę problemu 😃 Teraz rzutowanie działa tak jak powinno 😃

Mam jeszcze jedno pytanie jak działa funkcja Serial.parseInt() ?

Udostępnij ten post


Link to post
Share on other sites

Jaki fotorezystor trzeba użyć do "Lampka uruchamiana w ciemności v2" wydaje mi się że 1K.

Udostępnij ten post


Link to post
Share on other sites

rafiozo1, w zestawach do kursu znajduje się tylko jeden typ fotorezystorów, więc nie ma obaw 🙂

Udostępnij ten post


Link to post
Share on other sites

Treker, a mógłbyś napisać, które fotorezystory zostały dołączone do zestawu?

Udostępnij ten post


Link to post
Share on other sites

G1T, niestety w tej chwili nie mam tej informacji. Najlepiej zapytaj w Botlandzie - oni odpowiadają za to, aby wszystkie zestawy zawierały poprawne elementy 🙂

Udostępnij ten post


Link to post
Share on other sites

Cześć wszystkim ! Doszedłem do zadania 4.6. Udało mi się je zrobić w poniższy sposób.

Dajcie znać czy można jakoś - prościej, lepiej itd...

#define zielona1 12
#define zielona2 11
#define zolta1 10
#define zolta2 9
#define czerwona1 8
#define czerwona2 7

int odczytfoto1 = 0;
int odczytfoto2 = 0;
float napiecie1 = 0;
float napiecie2 = 0;
float proporcja = 0;

void setup(){

 pinMode(zielona1, OUTPUT); 
 pinMode(zielona2, OUTPUT); 
 pinMode(zolta1, OUTPUT); 
 pinMode(zolta2, OUTPUT); 
 pinMode(czerwona1, OUTPUT); 
 pinMode(czerwona2, OUTPUT);

 digitalWrite(zielona1, LOW);
 digitalWrite(zielona2, LOW);
 digitalWrite(zolta1, LOW);
 digitalWrite(zolta2, LOW);
 digitalWrite(czerwona1, LOW);
 digitalWrite(czerwona2, LOW);

}

void loop() {

 odczytfoto1 = analogRead(A4);
 odczytfoto2 = analogRead(A5);

 napiecie1 = odczytfoto1 * (5.0/1023.0);
 napiecie2 = odczytfoto2 * (5.0/1023.0);
 proporcja = (napiecie1/napiecie2);

 if ((napiecie1 > napiecie2) and (proporcja > 1.2) ) {

 digitalWrite(czerwona1, HIGH);
 digitalWrite(czerwona2, HIGH);
 digitalWrite(zolta1, LOW);
 digitalWrite(zolta2, LOW);

 }

 if ((napiecie2 > napiecie1) and (proporcja < 0.8) ) {

 digitalWrite(zielona1, HIGH);
 digitalWrite(zielona2, HIGH);
 digitalWrite(zolta1, LOW);
 digitalWrite(zolta2, LOW);

 }

 if ((proporcja > 0.7) and (proporcja < 1.3)) {
 digitalWrite(zolta1, HIGH);
 digitalWrite(zolta2, HIGH);
 digitalWrite(czerwona1, LOW);
 digitalWrite(czerwona2, LOW);
 digitalWrite(zielona1, LOW);
 digitalWrite(zielona2, LOW);

  } 

}

Udostępnij ten post


Link to post
Share on other sites

klewik, ciekawe rozwiązanie - ważne, że działa 🙂

Pamiętaj tylko, aby dodawać komentarze. Za jakiś czas zapomnisz sam, jak to wszystko działa.

Udostępnij ten post


Link to post
Share on other sites

witam,

mam problem przy kompilacji programu dotyczącego Wskaźnika na diodach wyskakuje mi błąd :

collect2.exe: error: ld returned 5 exit status

exit status 1
Błąd kompilacji.

nie zależnie czy napisałem program sam, czy skopiowałem jest to samo, dlaczego?

Udostępnij ten post


Link to post
Share on other sites

Witam.

Oto moje rozwiązanie zadnia 4.6. Napisane trochę chaotycznie ale działa. 🙂 Dodałem jeden element, mianowicie gdy nie pada na czujniki żadne światło miga jedna dioda.

int wartosc1 = 0;
int wartosc2 = 0;
int wartosc_1 = 0;
int wartosc_2 = 0;

void setup () { 
 Serial.begin(9600);
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);
 pinMode(7, OUTPUT);
}

void loop() {
 wartosc1 = analogRead(A5);
 wartosc2 = analogRead(A0);
 Serial.print("Czujnik 1: ");
 Serial.print(wartosc1);
 Serial.print("          Czujnik 2: ");
 Serial.println(wartosc2);

 wartosc_1 = map(wartosc1, 0, 1023, 0, 50);
 wartosc_2 = map(wartosc2, 0, 1023, 0, 50);

 if (wartosc2 < 20) {
   digitalWrite(3, LOW);
   digitalWrite(4, LOW);
   digitalWrite(5, LOW);
   digitalWrite(6, LOW);
   digitalWrite(7, LOW); 
  delay(500);
   digitalWrite(5, HIGH);
  delay(550);
 } else {
 if (wartosc1 < 20) {
   digitalWrite(3, LOW);
   digitalWrite(4, LOW);
   digitalWrite(5, LOW);
   digitalWrite(6, LOW);
   digitalWrite(7, LOW); 
  delay(500);
   digitalWrite(5, HIGH);
   delay(550);
 } else {
 if(wartosc_1 >> wartosc_2) {
   digitalWrite(3, HIGH);
   digitalWrite(4, LOW);
   digitalWrite(5, LOW);
   digitalWrite(6, LOW);
   digitalWrite(7, LOW);
 } else {
 if(wartosc_1 == wartosc_2) {
   digitalWrite(3, LOW);
   digitalWrite(4, LOW);
   digitalWrite(5, HIGH);
   digitalWrite(6, LOW);
   digitalWrite(7, LOW);
 } else {  
 if(wartosc_2 >> wartosc_1) {
   digitalWrite(3, LOW);
   digitalWrite(4, LOW);
   digitalWrite(5, LOW);
   digitalWrite(6, LOW);
   digitalWrite(7, HIGH);
 } else {
   if (wartosc_2 > wartosc_1) {
   digitalWrite(3, LOW);
   digitalWrite(4, LOW);
   digitalWrite(5, LOW);
   digitalWrite(6, HIGH);
   digitalWrite(7, LOW);
 } else {
   if (wartosc_1 > wartosc_2) {
   digitalWrite(3, LOW);
   digitalWrite(4, HIGH);
   digitalWrite(5, LOW);
   digitalWrite(6, LOW);
   digitalWrite(7, LOW);      
 }      
 }
 }
 }
 }
}
}
delay(50);
}

Udostępnij ten post


Link to post
Share on other sites

olinpus, jeśli działa, to super 🙂 Popracuj jeszcze nad wcięciami i komentarzami, bo tego brakuje!

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...