Принимайте еще одного энтузиаста!))) Сам проект относится к начальному уровню, но считаю его достойным публикации. Задача была сделать термометр с двустрочным дисплеем, куда будет выводиться цифровое значение температуры и шкала от 0 до 100 градусов... Проект создан на основе компонентов набора "Матрешка Z". Схему выкладывать не считаю нужным, ибо из кода всё и так понятно... Но,если скажете, что надо, - выложу... За основу взят начальные проекты "Метеостанция", "Тестер батареек", а также найденный в сети проект шкалы (http://www.electronics-lab.com/arduino-lcd-horizontal-progress-bar-using-custom-characters/) Код (C++): #include <math.h> #include <LiquidCrystal.h> LiquidCrystal lcd(13, 12, 11, 10, 9, 8); #define TERMIST_B 4300 #define VIN 5.0 #define lenght 16.0 unsigned char b; unsigned int peace; byte p1[8] = { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,}; byte p2[8] = { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,}; byte p3[8] = { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,}; byte p4[8] = { 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,}; byte p5[8] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,}; void setup() { lcd.createChar(0, p1); lcd.createChar(1, p2); lcd.createChar(2, p3); lcd.createChar(3, p4); lcd.createChar(4, p5); lcd.begin(16, 2); lcd.print("Temperature:"); } void loop() { float voltage = analogRead(A0) * VIN / 1023.0; float r1 = voltage / (VIN - voltage); float temperature = 1./( 1./(TERMIST_B)*log(r1)+1./(25. + 273.) ) - 273; lcd.setCursor(12, 0); lcd.print(temperature, 1); lcd.setCursor(0, 1); double a=lenght / 100 * temperature; if (a>=1) { for (int i=1;i<a;i++) { lcd.write(4); b=i; } a=a-b; } peace=a*5; switch (peace) { case 0: break; case 1: lcd.print((char)0); break; case 2: lcd.print((char)1); break; case 3: lcd.print((char)2); break; case 4: lcd.print((char)3); break; } for (int i =0;i<(lenght-b);i++) { lcd.print(" "); } delay(500); }
Проект очень понравился. Собрал и опробовал. Хотелось бы, чтобы он попал на Амперка Вики и в книжку Конспект Хакера. Нарисовал для вас схему на макетке.
Вообще-то применение сего в термометре в таком виде сомнительно, и есть специально "заточенная" библиотека LcdBarGraph шкалы, вот проектик для измерение уровня дерьма в выгребной яме.
Безусловно! Но я позиционирую этот проект именно как начальный!) Ясное дело, что можно прикрутить эту библиотеку, а еще управлять дисплеем через регистр и т.д., но это уже не для новичков...
Добрый день а может быть кто не будь подскажет, из за чего плавают показания температуры на 2-3 градуса?
меня смущает не точность показаний, а почему показания циклично прыгают (тоесть показание не стоит на месте)