StefanekP Napisano Lipiec 17, 2021 Udostępnij Napisano Lipiec 17, 2021 Mam problem z zadaniem 9.3 z Kursu Podstaw Arduino ("Napisz program, który przedstawia odległość przeszkody od czujnika na linijce diod LED. Im przeszkoda jest bliżej czujnika, tym więcej diod powinno się świecić"). Układ działa odwrotnie niż powinien-świeci się tym więcej diod, im przeszkoda jest dalej od czujnika. Kilkakrotnie sprawdziłem program, jednak nie mogę znaleźć błędu. Proszę o pomoc. Poniżej zamieszczam kod. Dodam, że moja linijka składa się z 10 diod LED, podłączonych do pinów 10-13. Z góry dziękuję za odpowiedzi. #define trig 2 #define echo 3 int odleglosc; int odlegloscPoprzednia; int odlegloscPrzeskalowana; int odlegloscPoprzedniaPrzeskalowana; void setup() { // put your setup code here, to run once: pinMode(trig,OUTPUT); pinMode(echo,INPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); odleglosc=pomiarOdleglosci(); odlegloscPoprzednia=odleglosc; Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: odleglosc=pomiarOdleglosci(); int numerDiody; if(odleglosc<=150){ odlegloscPrzeskalowana=map(odleglosc,0,150,1,11); odlegloscPoprzedniaPrzeskalowana=map(odlegloscPoprzednia,0,150,1,11); if(odlegloscPoprzedniaPrzeskalowana<odlegloscPrzeskalowana){ numerDiody=13; for(int i=10; i>odlegloscPrzeskalowana; i--){ digitalWrite(numerDiody,LOW); numerDiody--; } } else if(odlegloscPoprzedniaPrzeskalowana>odlegloscPrzeskalowana){ numerDiody=4; for(int i=0; i<odlegloscPrzeskalowana; i++){ digitalWrite(numerDiody,HIGH); numerDiody++; } } } else{ digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); } odlegloscPoprzednia=odleglosc; } int pomiarOdleglosci(){ digitalWrite(trig,LOW); delayMicroseconds(2); digitalWrite(trig,HIGH); delayMicroseconds(10); digitalWrite(trig,LOW); int odleglosc=pulseIn(echo,HIGH)/58; return odleglosc; }
StefanekP Lipiec 17, 2021 Autor tematu Udostępnij Lipiec 17, 2021 Diody są wpięte do pinów 4-13(wcześniej źle napisałem) przez rezystory 330 omów
farmaceuta Lipiec 17, 2021 Udostępnij Lipiec 17, 2021 odlegloscPrzeskalowana=map(odleglosc,0,150,11,1); odlegloscPoprzedniaPrzeskalowana=map(odlegloscPoprzednia,0,150,11,1); Po odwracaj 1-11 miejscami w map()...powinno zadzialac 1
StefanekP Lipiec 17, 2021 Autor tematu Udostępnij Lipiec 17, 2021 Nie rozumiem tylko, dlaczego zamienienie warunków miejscami nic nie zmienia.
farmaceuta Lipiec 17, 2021 Udostępnij Lipiec 17, 2021 2 minuty temu, ethanak napisał: Jakich warunków... Chyba o ify mu chodzi... No mi sie wydaje ze zamiana nic nie zmieni bo petle for sa tak skonstuowane (przez Ciebie)...ze nic sie nie zmieni...no nie wiem jak to inaczej rozpisac zeby ksiazka nie wyszla...
TomaszMatejuk Kwiecień 16, 2023 Udostępnij Kwiecień 16, 2023 Hej mógłby któs mi pokazać jak to zbudować aby połączyć tą liniję z 6 diod z czujnikiem odległósci? tak jak w zadaniu domowym 9.3
Treker (Damian Szymański) Kwiecień 19, 2023 Udostępnij Kwiecień 19, 2023 @TomaszMatejuk a na czym dokładnie utknąłeś? Pokaż swoje próby to coś podpowiemy.
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »