Плата Digispark с микроконтроллером ATtiny85 который является младшим в линейке микроконтроллеров Atmel. Плата Digispark предназначена для разработки уст-в с минимальными требования к периферии. Плата подключается непосредственно в USB разъем.
Питание на плату поступает от USB разъема, но так же можно использовать внешний источник +5 В при подключении к контакту 5V или от 7 до 12 В при подключении к контакту VIN. На плате Digispark расположено всего 6 цифровых выводов (помимо GND 5V и VIN). Каждый вывод в зависимости от настроек может иметь разное назначение:
- P0 — ARef, SDA, DI, PWM
- P1 — DO, PWM
- P2 — D/A, SCK
- P3 — D/A, USB+
- P4 — PWM, D/A, USB-
- P5 — D/A
Характеристики платы довольно скромные, но тем не менее для многих проектов этого будет достаточно:
- Микроконтроллер: ATTINY85
- Внутренний генератор: 8 МГц
- Встроенный умножитель частоты: 8
- Объем памяти программ: 8 Килобайт (из низ 2 Килобайт — загрузчик)
- SRAM 512 байт
- EEPROM 512 байт
- 2 таймера
- Аппаратные интерфейсы: SPI, I2C
- ШИМ: 3 канала
- АЦП: 4 канала
- Индикаторы: Питание Состояние (Pin0)
Для того чтобы начать программировать в среде Arduino IDE необходимо добавить плату Digispark:
- Файл > Настройки > Дополнительные ссылки для менеджера плат
Добавьте строчку: http://digistump.com/package_digistump_index.json
Далее откройте менеджер плат:
- Инструменты > Платы > Менеджер плат
Выберите платы: Digistump AVR Boards by Digistump
Далее выбираем плату Digispark (Default — 16,5mhz):
После выбора платы можно загружать скетчи. Перед загрузкой скетча плата Digispark должна быть удалена из USB разъема, после нажатия на кнопку «Загрузка» необходимо в течении 60 секунд вставить плату Digispark в USB разъем, после чего начнется загрузка скетча. Такая процедура загрузки скетчей связана с тем, что при старте контроллер он ждет загрузки кода через USB порт в течение 5 секунд, а потом переключается в режим исполнения имеющегося в памяти контроллера кода.
Для примера загрузите тестовый скетч, после загрузки которого начнем мигать светодиод расположенный на плате Digispark.
void setup(){ pinMode(1,OUTPUT); } void loop(){ digitalWrite(1,HIGH); delay(1000); digitalWrite(1,LOW); delay(1000); }
Для примера использования платы Digispark можно собрать простые часы, в которых будет использован LCD1602 c I2C модулем. I2C модуль на базе микросхем PCF8574 позволяют подключить символьный дисплей 1602 к плате Arduino всего по двум проводам SDA и SCL (А4 и А5), что дает возможность не использовать цифровые выходы Arduino при подключении дисплея. Так же в часах используются часы реального времени DS3231 (модуль). Корректировка времени может быть по времени компиляции, а так же при помощи двух кнопок.
Подключение кнопок
#include <TinyWireM.h> #include <TinyRTClib.h> #include <LiquidCrystal_I2C.h> // for LCD w/ GPIO MODIFIED for the ATtiny85 //#include <EEPROMex.h> // https://github.com/thijse/Arduino-EEPROMEx.git LiquidCrystal_I2C lcd(0x27,16,2); RTC_DS1307 rtc; byte d1,d2,d3,d4,d5,d6,e1,e2,e3; byte v1[8] = {7,7,7,7,7,7,7,7}; byte v2[8] = {7,7,0, 0, 0, 0, 0, 0}; byte v3[8] = { 0, 0, 0, 0, 0,0,31,31}; byte v4[8] = {31,31, 0, 0, 0, 0,31,31}; byte v5[8] = { 28, 28, 0, 0, 0, 0, 28, 28}; byte v6[8] = {28,28,28,28,28,28,28,28}; byte v7[8] = { 0, 0, 0, 0, 0, 0,7,7}; byte v8[8] = { 31, 31,0,0,0,0,0, 0}; int a[6],hh,mm,ss,seting,w,x; void setup(){ TinyWireM.begin(); lcd.init(); lcd.backlight(); lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4); lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8); //rtc.adjust(DateTime(2018, 6, 29, 9, 33, 0)); pinMode(4,INPUT); // SET pinMode(1,INPUT); // +++ } void loop(){ DateTime now = rtc.now(); hh=now.hour();mm=now.minute();ss=now.second(); if(digitalRead(4)==HIGH){seting++;delay(200);if(seting>3){seting=0;}} if(seting==1&&digitalRead(1)==HIGH){hh++;w=1;delay(200);if(hh>23){hh=0;}} if(seting==2&&digitalRead(1)==HIGH){mm++;w=1;delay(200);if(mm>59){mm=0;}} if(seting==3&&digitalRead(1)==HIGH){ss=0;w=1;delay(200);} if(w==1){w=0;rtc.adjust(DateTime(2018, 6, 29, hh, mm, ss));} a[0]=now.hour()/10; a[1]=now.hour()%10; a[2]=now.minute()/10; a[3]=now.minute()%10; a[4]=now.second()/10; a[5]=now.second()%10; for(x=0;x<4;x++){ switch(x){ case 0: e1=0,e2=1,e3=2;break; case 1: e1=3,e2=4,e3=5;break; case 2: e1=7,e2=8,e3=9;break; case 3: e1=10,e2=11,e3=12;break; } switch(a[x]){ case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break; case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break; case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break; case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break; case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break; case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break; case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break; case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break; case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break; case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break; } lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3); lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6); } lcd.setCursor(6,0);lcd.print(".");lcd.setCursor(6,1);lcd.print("."); lcd.setCursor(14,0);lcd.print(a[4]);lcd.print(a[5]); lcd.setCursor(14,1); switch(seting){ case 0:lcd.print(" ");break; case 1:lcd.print("HH");break; case 2:lcd.print("MM");break; case 3:lcd.print("S0");break; } delay(100); }//loop
Для корректировки времени нажмите кнопку SET, во второй строке справа индикатора появится надпись HH (часы), далее нажатием кнопки ++ установите часы, аналогично устанавливаются минуты. Установка времени секунд предусматривает только обнуление в режиме SS при нажатии кнопки ++.
Перед загрузкой скетча удалите библиотеку LiquidCrystal_I2C из папки библиотек, эта библиотека входит в конфликт с библиотекой LiquidCrystal_I2C от Digispark. LiquidCrystal_I2C и другие библиотеки указанные в скетче устанавливать не нужно, они уже находятся в Arduino IDE после добавления платы Digispark.
Привет. Заказал платки для пробы этого проекта. А как с доработкой под дисплей tm1637 ?
Привет. Ждать скетч под дисплей tm1637 ?
На выходных постараюсь запустить tm1637 на Digispark
Буду ждать. Особенно заинтересовало что есть кнопки установки времяни.
https://arduinoplus.ru/nedorogie-cifrovie-chasi-svoimi-rukami/ — это работает ,но нет кнопок коррекции часов без компа.