Skocz do zawartości

Problem z zadaniem 9.3 z Kursu Podstaw Arduino-układ działa odwrotnie niż powinien


StefanekP

Pomocna odpowiedź

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;
}

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

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...

Link do komentarza
Share on other sites

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ę »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.