Arduino Polska Forum

Pełna wersja: Program do termometru binarnego
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam. Otóż chciałbym zbudować prosty termometr cyfrowy który będzie wyświetlał temperature w postaci binarnej. Tzn jest 5 diód czyli zakres do 64 stopni celclusza. Udało mi się rozgryźć kod w jaki sposób zmusić arduino do wyświetlenia liczb w postaci binarnej na diodach. Problem mam z kodem żeby dało się zmienić licznik na wartość temperatury z układu LM35. Chodzi mi o to żeby tak jakby zmienna BYTE była taka jak temperatura. Kod wgrałęm ale nie działa. Jeśli ktoś byłby w stanie pomóc to byłbym wdzięczny Smile



int ledPin[] = {7,8,9,10,11};
int val;
int tempPin = 1;

void setup()
{
  for (int i =0;i<5;i++)
  {
    pinMode(ledPin[i], OUTPUT);
  }
  pinMode(4, INPUT_PULLUP);
}

void loop()
{
  for (byte counter =0;counter<=32;counter)
  {
    displayBinary(counter);
    delay(500);
    val = analogRead(tempPin);
  float mv = ( val/1024.0)*5000;      // w tym miejscu coś trzeba zmodyfikować ale nie wiem co
  float cel = mv/10;
  delay(500);
  cel = counter;            
  }
 
}

void displayBinary(byte numToShow)
{
  for (int i =0;i<5;i++)
  {
    if (bitRead(numToShow, i)==1)
    {
      digitalWrite(ledPin[i], HIGH);
    }
    else
    {
      digitalWrite(ledPin[i], LOW);
    }
  }
 


}
Coś mi tu nie gra np 64stC to 7 bitów, a ty odczytujesz 5 wiec twoje do 64 mija się z celem. 5 bitów (led) to max 31stC wskaże..
(15-09-2020, 21:54)Jarewa0606 napisał(a): [ -> ]Coś mi tu nie gra np 64stC to 7 bitów, a ty odczytujesz 5 wiec twoje do 64 mija się z celem.  5 bitów (led) to max 31stC wskaże..
Tak wiem o co chodzi. Wystarczy tam tą piątke [for (int i =0;i<5;i++)] zmienić na dowolną inna liczbę żeby uzyskać więcej bitów. Mi chodzi o to co zrobić żeby program wyświetlał odczyt z LM35 na żywo w postaci binarnej
Przelicznik jest dobry, ten for jest trochę nie za bardzo i bez sensu

cel = counter;

powinno być

counter = cel;