sskorpion Napisano Kwiecień 29, 2016 Udostępnij Napisano Kwiecień 29, 2016 Proszę o pomoc w napisaniu mojego pierwszego programu ArduinoUno. Chcę z pomocą 2 wejść sterować 1 wyjściem (zaświecanie diody LED) Potrzebne są 3 takie układy wyjść/wejść w jednym mikrokontrolerze. Nie wiem jak się za to zabrać. Zamieszczam rysunek stanów na wejściach. Za pomoc z góry dziękuję. Wypociłem coś takiego, działa. Ale jak to zrobić żeby były trzy niezależne od siebie wyjścia. #define dioda1 3 #define sw1 9 #define sw2 10 int wypelnienie = 255; int zmiana = 30; void setup() { pinMode(dioda1, OUTPUT);//Konfiguracja pinu jako wyjścia pinMode(sw1, INPUT_PULLUP);//Konfiguracja pinu jako wejścia pinMode(sw2, INPUT_PULLUP);//Konfiguracja pinu jako wejścia } void loop() { if (digitalRead(sw1) == LOW) { digitalWrite(dioda1, HIGH); } else { digitalWrite(dioda1, LOW); } if (digitalRead(sw2) == LOW) { puls(); } else { digitalWrite(dioda1, LOW); }} void puls() { analogWrite(dioda1, wypelnienie); if (wypelnienie > 0) { wypelnienie = wypelnienie - zmiana; } else { wypelnienie = 255; } delay(50); } Cytuj Link do komentarza Share on other sites More sharing options...
deshipu Kwiecień 29, 2016 Udostępnij Kwiecień 29, 2016 Polecam zacząć od kursu arduino z tego forum. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Kwiecień 29, 2016 Udostępnij Kwiecień 29, 2016 sskorpion, również odsyłam do kursu Arduino: https://forbot.pl/blog/kursy Zadanie można zrealizować już po kilku pierwszych lekcjach. Oczywiście jak zadasz jakieś konkretne pytanie później, to pomogę. Tylko zacznij jakoś działać 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
sskorpion Maj 2, 2016 Autor tematu Udostępnij Maj 2, 2016 w momencie wysterowania wszystkich diód spada częstotliwość pulsowania. Jakieś pomysły żeby nie było tego efektu? #define dioda1 6 #define dioda2 9 #define dioda3 10 #define dioda4 11 #define sw1 2 #define sw2 3 #define sw3 4 #define sw4 5 #define sw5 7 #define sw6 8 #define sw7 12 #define sw8 13 int wypelnienie1 = 255; int wypelnienie2 = 255; int wypelnienie3 = 255; int wypelnienie4 = 255; int zmiana = 20; void setup() { pinMode(dioda1, OUTPUT);//Konfiguracja pinu jako wyjścia pinMode(dioda2, OUTPUT);//Konfiguracja pinu jako wyjścia pinMode(dioda3, OUTPUT);//Konfiguracja pinu jako wyjścia pinMode(dioda4, OUTPUT);//Konfiguracja pinu jako wyjścia pinMode(sw1, INPUT_PULLUP);//Konfiguracja pinu jako wejścia pinMode(sw2, INPUT_PULLUP);//Konfiguracja pinu jako wejścia pinMode(sw3, INPUT_PULLUP);//Konfiguracja pinu jako wejścia pinMode(sw4, INPUT_PULLUP);//Konfiguracja pinu jako wejścia pinMode(sw5, INPUT_PULLUP);//Konfiguracja pinu jako wejścia pinMode(sw6, INPUT_PULLUP);//Konfiguracja pinu jako wejścia pinMode(sw7, INPUT_PULLUP);//Konfiguracja pinu jako wejścia pinMode(sw8, INPUT_PULLUP);//Konfiguracja pinu jako wejścia digitalWrite(dioda1, LOW); //Wyłączenie diody digitalWrite(dioda2, LOW); //Wyłączenie diody digitalWrite(dioda3, LOW); //Wyłączenie diody digitalWrite(dioda4, LOW); //Wyłączenie diody } void loop() { if (digitalRead(sw1) == LOW) { digitalWrite(dioda1, HIGH); } else { digitalWrite(dioda1, LOW); } if (digitalRead(sw2) == LOW) { analogWrite(dioda1, wypelnienie1); if (wypelnienie1 > 0) { wypelnienie1 = wypelnienie1 - zmiana; } else { wypelnienie1 = 255; } delay(20); } else { } if (digitalRead(sw3) == LOW) { digitalWrite(dioda2, HIGH); } else { digitalWrite(dioda2, LOW); } if (digitalRead(sw4) == LOW) { analogWrite(dioda2, wypelnienie2); if (wypelnienie2 > 0) { wypelnienie2 = wypelnienie2 - zmiana; } else { wypelnienie2 = 255; } delay(10); } else { } if (digitalRead(sw5) == LOW) { digitalWrite(dioda3, HIGH); } else { digitalWrite(dioda3, LOW); } if (digitalRead(sw6) == LOW) { analogWrite(dioda3, wypelnienie3); if (wypelnienie3 > 0) { wypelnienie3 = wypelnienie3 - zmiana; } else { wypelnienie3 = 255; } delay(20); } else { } if (digitalRead(sw7) == LOW) { digitalWrite(dioda4, HIGH); } else { digitalWrite(dioda4, LOW); } if (digitalRead(sw8) == LOW) { analogWrite(dioda4, wypelnienie4); if (wypelnienie4 > 0) { wypelnienie4 = wypelnienie4 - zmiana; } else { wypelnienie4 = 255; } delay(20); } else { } } __________ Komentarz dodany przez: Nawyk Na przyszłość używaj proszę znaczników [ Code ] do wklejania kodu - poprawiłem 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
spartakus Maj 3, 2016 Udostępnij Maj 3, 2016 Przy prawie każdej diodzie masz delay, który blokuje pracę procesora na jakiś czas, stąd pojawiają się Twoje problemy. Możesz to rozwiązać używając timerów zamiast delay, albo ustawiając jeden delay, zamiast wielu, w kluczowym momencie działania programu (np. na końcu). 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!