• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Wykonanie termometru i czujnika przechyłu
#4
Tu masz mniej więcej jak sobie poradzić z nieliniowością ale będziesz musiał grzać czujniki , zrobić wykres i powstawiać sobie dane do zmiennych a1,b1,c1,d1 . Jakbyś nie zrozumiał to pytaj bo jest 3 w nocy i nie bardzo już mi się chce rozpisywać .

Kod:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int a1[7] = { 0,0,100,200,300,400,500 }; // zakres poziom niski
int b1[7] = { 0,100,200,300,400,500,600 }; // zakes poziom wysoki
int c1[7] = { 0,-20,-10,0,10,20,30 }; // przedział temperatury od
int d1[7] = { 0,-10,0,10,20,30,40 }; // przedział temperatury do
byte ac;

void setup() {

  lcd.begin(16, 2);
  pinMode(10,OUTPUT);
  
}

void loop() {
  
  if (analogRead(A0) < 500){digitalWrite(10,HIGH);}
  
  int term1 = analogRead(A1);
  int term2 = analogRead(A2);
  
  if (term1 == 0 and term1 <= 100 ){ac = 1;} // odczyt temp 1 i pzydzielenie zakresu 1
  if (term1 > 100 and term1 <= 200 ){ac = 2;} // odczyt temp 1 i pzydzielenie zakresu 2
  if (term1 > 200 and term1 <= 300 ){ac = 3;} // odczyt temp 1 i pzydzielenie zakresu 3
    
  int a = a1[ac];int b = b1[ac]; // przeliczenia zakresów
  int c = c1[ac];int d = d1[ac]; //
  
int temp1 = map(term1,a,b,c,d); // mapowanie wedłóg ustalonych zakresów
int temp2 = map(term2,a,b,c,d);
  
  lcd.setCursor(2,0);
  lcd.print(temp1);lcd.print(" C"); // wynik
  lcd.setCursor(2,1);
  lcd.print(temp2);lcd.print(" C");
  
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Wykonanie termometru i czujnika przechyłu - przez JasQ - 02-04-2016, 02:17

Skocz do:


Przeglądający: 1 gości