Treker (Damian Szymański) Styczeń 25, 2016 Udostępnij Styczeń 25, 2016 Cierbo, kod nie jest może najprostszy, ale wygląda poprawnie. Przejrzyściej byłoby gdybyś najpierw zrobił if'a sprawdzającego, na którym fotorezystorze jest większy odczyt i dopiero dalej zajął się odpowiednim wyświetleniem stanu na LEDach. Warto też pamiętać o komentarzach. Masz jakiś konkretny problem? Jeśli tak, to zadaj pytanie, wtedy łatwiej będzie udzielić pomoc. Cytuj Link do komentarza Share on other sites More sharing options...
Cierbo Styczeń 25, 2016 Udostępnij Styczeń 25, 2016 Treker, otóż żadne z diod się nie zapala nie wiedzieć dlaczego, oraz jak zrobić if'a sprawdzającego? Prosze o drobną wskazówkę. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 25, 2016 Udostępnij Styczeń 25, 2016 Cierbo, zacznijmy od tego, czy w terminalu widzisz poprawnie odczytane informacje? Sprawdzałeś, czy możesz sterować samymi diodami (bez tego całego algorytmu) - wyeliminujesz wtedy niepewność, czy układ jest poprawnie połączony i będziemy mogli ruszyć dalej ze sprawdzaniem 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Cierbo Styczeń 25, 2016 Udostępnij Styczeń 25, 2016 Wybacz, że pisze z taką częstotliwością ale dużo mam na głowie... Wracając, wartości odczytane w terminalu są poprawne, układ również jest poprawnie podłączony 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Treker (Damian Szymański) Styczeń 26, 2016 Udostępnij Styczeń 26, 2016 Cierbo, jednak coś musi być źle. Spójrz na swoje warunki - nie ma tam takiej możliwości, aby żadna z diod nie świeciła. Z tego co piszesz wychodzi, że w praktyce wszystkie są wyłączone, więc coś tu nie gra 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Cierbo Styczeń 26, 2016 Udostępnij Styczeń 26, 2016 Ok. Podłączyłem wszystko jeszcze raz na płytkę i teraz świecą te diody... nie wiem co tam popaprałem xd Teraz układ reaguje następująco, po stronie gdzie jest ciemno tam święcą diody, natomiast tam gdzie występuje silne źródło światła to gasną diody. W zasadzie układ pokazuje po której stronie jest ciemniej. Wychodzi na to, że zrobiłem na odwrót niż w zadaniu było wymagane. Gdybym wiedział w jakim programie robicie te rysunki graficzne z arduino i płytką stykową to bym to lepiej zobrazował 🙂 Wspomniałeś wcześniej o if sprawdzającym, jak się za to zabrać? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 26, 2016 Udostępnij Styczeń 26, 2016 Cierbo, w takim razie musisz tylko zamienić podłączenie czujników (zamień fizycznie czujnik lewy z prawym). Wtedy będzie działało i nie będziesz musiał nic już w programie zmieniać 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
koba94 Luty 18, 2016 Udostępnij Luty 18, 2016 A to moje rozwiązania zadań. Treker, już mi zwracałeś uwagę na brak komentarzy 🙂 Wiem, że są przydatne, ale w tych kodach wszystko jest wg mnie wystarczająco czytelne 🙂 Zadanie 4.5 (kiepsko, niepełna funkcjonalność) // ***** DEFINES ***** #define switch 12 #define red 8 #define yellow 7 #define green 6 #define potencjometr A4 // ***** VARIABLES ***** int odczyt = 0; int liczba = 0; boolean wcisniety = false; byte licznik = 0; // ***** SETUP ***** void setup() { Serial.begin(9600); pinMode(switch, INPUT_PULLUP); pinMode(red, OUTPUT); pinMode(yellow, OUTPUT); pinMode(green, OUTPUT); digitalWrite(red, LOW); digitalWrite(yellow, LOW); digitalWrite(green, LOW); Serial.println("Witaj! Przekrec potencjometr i wcisnij przycisk."); } // ***** LOOP ***** void loop() { odczyt = analogRead(potencjometr); //Serial.println(odczyt); //Serial.println(wcisniety); if (digitalRead(switch) == LOW) { Serial.println("Podaj liczbe: "); wcisniety = true; delay(500); } if (wcisniety == true) { if (Serial.available() > 0) { liczba = Serial.parseInt(); if ( (abs(liczba - odczyt)) < 50 ) { digitalWrite(red, LOW); digitalWrite(yellow, LOW); digitalWrite(green, HIGH); Serial.println("YOU WIN!"); } else if (licznik == 2) { digitalWrite(red, HIGH); digitalWrite(yellow, LOW); digitalWrite(green, LOW); Serial.println("Przegrales..."); } else { digitalWrite(red, LOW); digitalWrite(yellow, HIGH); digitalWrite(red, LOW); Serial.println("Zle, Podaj liczbe: "); licznik = licznik + 1; } } } } Zadanie 4.6 (To mi całkiem fajnie wyszło 😃) // ***** DEFINES ***** #define led1 2 #define led2 3 #define led3 4 #define led4 5 #define led5 6 #define goraADC A4 #define dolADC A5 // ***** VARIABLES ***** int gora = 0; int dol = 0; int balans = 0; // ***** SETUP ***** void setup() { Serial.begin(9600); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); } // ***** LOOP ***** void loop() { gora = analogRead(goraADC); dol = analogRead(dolADC); balans = gora - dol; Serial.println(balans); delay(100); if (balans > 150) { digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, HIGH); } else if (balans <= 150 && balans > 50) { digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, HIGH); digitalWrite(led5, LOW); } else if (balans <= 50 && balans >= -50) { digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, HIGH); digitalWrite(led4, LOW); digitalWrite(led5, LOW); } else if (balans < -50 && balans >= -150) { digitalWrite(led1, LOW); digitalWrite(led2, HIGH); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); } else if (balans < -150) { digitalWrite(led1, HIGH); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); } } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 19, 2016 Udostępnij Luty 19, 2016 koba94, dla Ciebie pewnie są teraz jasne, ale gdy publikujesz je w Internecie i piszesz, że coś nie działa. To mi (czy komuś innemu) jest ciężko analizować program, jeśli nie wiemy, co miałeś na myśli. Jakie masz dokładniej problemy w zadaniu 4.5? Cytuj Link do komentarza Share on other sites More sharing options...
Kaczy Luty 25, 2016 Udostępnij Luty 25, 2016 int i = 0; //Definicja zmiennych int odczyt = 0; int wartosc = 0; void setup() { for (i=8; i<=12; i++) { //pętla definiująca diody na pinach od 8 do 12 jako OUTPUT pinMode(i, OUTPUT); } } void loop() { odczyt = analogRead(A5); //pobieranie danych z piny A5 wartosc = map(odczyt, 0, 1023, 1, 5); //mapowanie wartości for (i=8; i<=12; i++) { //kolejna pętla, dzięki której wybieramy piny od 8 do 12 if ((i-7) == wartosc) { /*warunek, jesli pin -7 jest równy zmapowanej wartości, załącza HIGH, w przeciwnym wypadku jest to low. Można skrócić ten krok i w warunku zastosować samo i, ale wtedy w mapowaniu zamiast cyfr od 1-5 musimy zmapować od 8-12*/ digitalWrite(i, HIGH); } else { digitalWrite(i, LOW); } } delay(50); } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 25, 2016 Udostępnij Luty 25, 2016 Kaczy, a komentarze 🙂? Cytuj Link do komentarza Share on other sites More sharing options...
Kaczy Luty 26, 2016 Udostępnij Luty 26, 2016 takie moje złe przyzwyczajenie 😃 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 26, 2016 Udostępnij Luty 26, 2016 Kaczy, po poprawkach od razu lepiej 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Cesenu Luty 27, 2016 Udostępnij Luty 27, 2016 Witam mam problem przy zadaniu 4.4, mianowicie w miejscu żeby Arduino wysłało komunikat o napięciu na dzielniku z fotorezystorem TYLKO RAZ. Po zgaszeniu światła lampka się zapala i wysyła jeden komunikat do PC, ale po zgaszeniu lampa nie gaśnie. Dopiero powtórne wgranie programu gasi lampkę. Mój kod: int prog=0; int fotorezystor=0; float napiecie=0; void setup() { // put your setup code here, to run once: pinMode(8, OUTPUT); digitalWrite(8, LOW); Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: prog=analogRead(A5); fotorezystor=analogRead(A4); napiecie=5/1023*fotorezystor; //Serial.println(odczytanaWartosc1); delay(500); if (fotorezystor<prog) { digitalWrite(8, HIGH); Serial.println(fotorezystor); while (fotorezystor) {} } else { digitalWrite(8, LOW); } } Cytuj Link do komentarza Share on other sites More sharing options...
Wojciech Luty 27, 2016 Udostępnij Luty 27, 2016 fotorezystor=analogRead(A4); ... if (fotorezystor<prog) { ... while (fotorezystor) {} } W ifie używasz innego warunku niż w while'u. napiecie=5/1023*fotorezystor; To nie jest obliczane jako float, bo żaden z elementów po prawej nie jest typu float. Poza tym nigdzie nie używasz tej zmiennej. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!