Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Tinkercad код Пожалуйста объясните как работает код

Михаил г Ученик (104), на голосовании 1 год назад
Пожалуйста объясните как работает этот код срочно надо:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define POT A0
#define SWET A2
#define TEMP A1
#define GAS_SENSOR A3
#define BUTTON 6


bool debug=1;

int pot_data=0;
int screen=0;

int swet_data=0;
int temp_input=0;
float temp_data=0;
int gas_data=0;

int swet_max=0;
float temp_max=0;

int swet_min=0;
float temp_min=0;

unsigned long int swet_sum=0;
int swet_count=0;
double temp_sum=0;
int temp_count=0;



void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(POT,INPUT);
pinMode(SWET,INPUT);
pinMode(TEMP,INPUT);
pinMode(BUTTON,INPUT);
pinMode(GAS_SENSOR,INPUT);
lcd.print(" This id my ");
lcd.setCursor(0,1);
lcd.print(" first project ");
delay(4000);
lcd.clear();
}

void loop() {
//inputs
pot_data=analogRead(POT);
swet_data=analogRead(SWET);
temp_input=analogRead(TEMP);
gas_data=analogRead(GAS_SENSOR);
if (debug){
Serial.println();
Serial.print("pot_data= ");
Serial.println(pot_data);
Serial.print("swet_data= ");
Serial.println(swet_data);
Serial.print("temp_input= ");
Serial.println(temp_input);
Serial.print("gas_data= ");
Serial.println(gas_data);
Serial.println();
Serial.println();
Serial.println();
Serial.println();
}
// calculate
screen=map(pot_data,0,1023,0,3);
temp_data=temp_input*5.0/1024;
temp_data=(temp_data-0.5)*100;
swet_sum=swet_sum+swet_data;
temp_sum=temp_sum+temp_data;

// sroll
if (screen==0){

lcd.print(" Current data:");
lcd.setCursor(0,1);
lcd.print("S: ");
lcd.print(swet_data);
lcd.setCursor(7,1);
lcd.print("T: ");
lcd.print(temp_data);

}else if (screen==1){
lcd.print(" Gas data: ");
lcd.setCursor(0,1);
lcd.print(" Now: ");
lcd.print(gas_data);
lcd.print(" / 400");

}else if (screen==2){
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("S: ");
lcd.print(swet_max);
lcd.setCursor(7,1);
lcd.print("T: ");
lcd.print(temp_max);


}else if (screen==3){


}
delay(2000);
lcd.clear();
}
Голосование за лучший ответ
Миска Рису Ученик (201) 1 год назад
по задумке считываются 4 аналоговых входа:
потенциометр
освещенность?
температура
содержане газа (CO2?)
и, в зависимости от положения потенциометра, на экран выводится:
освещенность? и температура
содержание газа
макс. зарегистрированные освещенность и температура
Evgeny Мастер (1466) 1 год назад
Похоже это скетч для Ардуино.

Есть 4 датчика - сенсора.

#define POT A0
#define SWET A2
#define TEMP A1
#define GAS_SENSOR A3

И lcd дисплей на 2 строки и 16 колонок.

Данные с датчиков считываются каждые 2 секунды и в зависимости от показаний аналогового пина 0 их значения выводятся на lcd дисплей.

Температура линейно преобразуется из диапазона от 0 до 1024 в диапазон от -50 до 450

 temp_data=temp_input*5.0/1024;  
temp_data=(temp_data-0.5)*100;

В случае если pot_data (A0) от 0 до 256 выводится
 Current data: 
S: sweet_data T: temp_daata
В случае если pot_data от 256 до 512 выводится
 Gas data: 
Now: gas_data /400

В случае если pot_data от 512 до 768 выводится
 
S:0 T:0


В случае если pot_data от 768 до 1024 выводится
Пустой экран.

Так как переменная debug=1 то в консоль тоже печатаются значения переменных считанных с датчиков ( напряжение на соответсвтующих пинах)
Похожие вопросы