Очередной пост из серии про Digispark.
Это ответ на частые вопросы о том, что конкретного и полезного можно сделать на Digispark.
Пусть простят меня поклонники ЛЭДтюнинга, ну не вдохновляет меня пока это направление. Поэтому предлагаю реализацию часов и термометра …

ниже смотрите видео как все это работает.
для тех кто захочет все это повторить и "подогнать" под свои условия привожу скетч…
#include <avr/io.h>
#include <util/delay.h>
#include <onewire.h>
int temp, T, t, Ltp, LT, Lt, Htp, HT, Ht;
OneWire ds(1);
byte data[12];
byte addr[8];
void setup() {
DDRB |=(1<<0);
DDRB |=(1<<2);
PORTB &=~(1<<2);
Ltp = 99;
Htp = 0;
}
void loop(){
readTemperature();
_delay_ms(750);
getTemperature();
if (temp > Htp) {Htp = temp;}
if (temp < Ltp) {Ltp = temp;}
HT = Htp/10;
if (HT==0) HT=10;
Ht = Htp%10;
if (Ht==0) Ht=10;
T = temp/10;
if (T==0) T=10;
t = temp%10;
if (t==0) t=10;
LT = Ltp/10;
if (LT==0) LT=10;
Lt = Ltp%10;
if (Lt==0) Lt=10;
writeDigit(LT);
writeDigit(Lt);
writeDigit(0);
writeDigit(0);
writeDigit(T);
writeDigit(t);
writeDigit(0);
writeDigit(0);
writeDigit(HT);
writeDigit(Ht);
_delay_ms(500);
}
void writeDigit(byte d) {
for (byte i=0; i<4; i++) {
PORTB |=(1<<2);
_delay_us(20);
digitalWrite(0, d&(1<<(3-i)));
_delay_us(10);
PORTB &=~(1<<2);
_delay_us(30); }
_delay_us(70);
}
boolean readTemperature(){
if (!ds.search(addr)) {
ds.reset_search();
return false; }
if (OneWire::crc8(addr, 7)!=addr[7]) {
return false; }
if (addr[0]!=0x10 && addr[0]!=0x28) {
return false; }
ds.reset();
ds.select(addr);
ds.write(0x44, 1);
}
boolean getTemperature(){
byte present = 0;
present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for (byte i=0; i<9; i++) {
data[i] = ds.read(); }
temp = (((data[1]<<8)+data[0])/2);
return true;
}


Комментарии 15
Подскажите в дигиспарк влезет библиотека OLED экрана?бо хочю сделать маленький термометр и пока еще не разобрался влезет ли мой скетч термометра в тиньку 13
а какая связь дигиспарка и тринадцатой тиньки ?
Думал вы знаете
Круто! Вот думаю как такому научиться))) и попробовать повторить для себя! Но пока я словно в темном лесу — когда вижу такое)))
посмотри предыдущее видео про digispark и начинай действовать …
Хорошо, посмотрю! сейчас это видео посмотрел! И чуток в шоке! Можно при желании и навыках любую фишку сделать для себя! Все подробно и понятно! Спасибо вам!
не совсем любую, а в рамках возможностей контроллера практически любую … :))
я имел ввиду, если использовать разные контроллеры! И знать что к чему!
в принципе да…
может вы еще знаете как в блоках управления авто поковыряться можно? или хотябы в программе? как отключить ненужный блок из цепочки, что бы не было опроса его по CAN-шине
нет не знаю…
Здрово!
Спасибо…
здавствуйте, а можно ли сделать схему на 3 датчика?
можно…