Skocz do zawartości

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


Pomocna odpowiedź

Napisano

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

 

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

  • 1 rok później...

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