Уличный измеритель влажности и температуры.
- Войдите на сайт для отправки комментариев
Всем привет. Заказали мне сделать измеритель влажности и теремпературы на улицу. Тоесть это будут большие семисегментные индикаторы (или собрать на светодиодах) , датчик влажности и теремпературы ( скорее всего DHT22 ) . В arduino я не сказать, что полный нуб, но что-то уже умею. Есть несколько вопросов по комплектующим и по програмной части.
Первый вопрос это какой индикатор взять? Нужен достаточно большой, что-бы было видно на улице. Хочу взять семисегментный, но не могу найти большие. Есть вариант собрать самому, на светодиодах.
Потом программа. Хотелось бы взять из интернета, но таких проектов я не встретил. Самому написать будет очень сложно. Наверное прийдется использовать сдвиговый регистр, с ними я еще не работал. Т.к у нано будет маловато выводов.
Извиняюсь, может быть сказал что-то неправильно)
А поискать на али? http://ru.aliexpress.com/item/Free-shipping-10Pcs-lot-Wholesale-5-inch-1...
Там и больше есть ;)
:) Какие большие)) Я лучше из светодиодов соберу ибо дорого очень) У меня сейчас больше вопрос по программной части.
А какие проблемы с программной частью? Как зажигать тот или иной диод в зависимости от того, какаю цифру вывести на сегмент надо?
typedef struct { byte A : 1; byte B: 1; byte C: 1; byte D: 1; byte E: 1; byte F: 1; byte G: 1; } Segment; // описатель одного сегмента // описываем циферки // 1 Segment dig1; dig1.B=1; dig1.C = 1; // 2 Segment dig2; dig2.A=1; dig2.B=1; dig2.G = 1; dig2.D=1; dig2.E=1; // и т.д. Segment* segments[] = {&dig0,&dig1,&dig2, &dig3,&dig4,&dig5,&dig6,&dig7,&dig8,&dig9}; void showNum(byte num, bool showDot) { // зажигаем нужный номер на индикаторе if(num >=0 && num < 10) { Segment* seg = segments[num]; if(seg.A) // зажигаем сегмент А // и т.д. } }Тупо и в лоб, неоптимально, некрасиво, но - особо не думал.
Я не понял как со сдвиговым регистром работать. У меня их будет 3. Буду делать 3 индикатора семисегментных. На первом будет вывод букры T или H (температура или влажность) Второй и третий для их значения. Нашел библиотеку простую для работы с ними. Вот кусок кода, будут зажигать все светодиоды. А если я 2 регистра подключу? Какие тогда пины в коде прописывать?
#include <Shift595.h> #define dataPin 11 // pin 14 on the 74HC595 #define latchPin 4 // pin 12 on the 74HC595 #define clockPin 2 // pin 11 on the 74HC595 #define numOfRegisters 1 // number of shift registers present Shift595 Shifter(dataPin, latchPin, clockPin, numOfRegisters); void setup(){} void loop() { Shifter.setRegisterPin(0, HIGH); Shifter.setRegisterPin(1, HIGH); Shifter.setRegisterPin(2, HIGH); Shifter.setRegisterPin(3, HIGH); Shifter.setRegisterPin(4, HIGH); Shifter.setRegisterPin(5, HIGH); Shifter.setRegisterPin(6, HIGH); Shifter.setRegisterPin(7, HIGH); }Более сложный код я не осилю) Где биты и тд прописывать нужно.
Я хочу как и вы прописать каждую цифру в массив.
Раньше я в проектах делал примерно так:
void snatie() { digitalWrite(greenLed, HIGH); delay (250); digitalWrite(greenLed, LOW); guardSound(4); }Но тут наверное по другому надо сделать.