| Ваш IP: 3.239.233.139 | Online(28) - гости: 13, боты: 15 | Загрузка сервера: 2.34 ::::::::::::


Плата Digispark с Arduino Attiny85

Плата 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 (модуль). Корректировка времени может быть по времени компиляции, а так же при помощи двух кнопок.

http://forum.rcl-radio.ru/uploads/images/2020/07/d7e756b785e4cdd47d2b4bd92e63f439.png

Подключение кнопок

#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 при нажатии кнопки ++.
http://forum.rcl-radio.ru/uploads/images/2020/07/df496c25e399022ec1953c49eb39aaac.pnghttp://forum.rcl-radio.ru/uploads/images/2020/07/bb1796645c964a52b0370982937c598b.pnghttp://forum.rcl-radio.ru/uploads/images/2020/07/b8f72179b05c96ac80db5b61602dad4e.pngПеред загрузкой скетча удалите библиотеку LiquidCrystal_I2C из папки библиотек, эта библиотека входит в конфликт с библиотекой LiquidCrystal_I2C от  Digispark. LiquidCrystal_I2C и другие библиотеки указанные в скетче устанавливать не нужно, они уже находятся в Arduino IDE после добавления платы Digispark.

Форум — http://forum.rcl-radio.ru/viewtopic.php?id=182

Комментарии

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • УМЗЧ 100Вт на транзисторах

    УМЗЧ 100Вт на транзисторах

    Благодаря использованию на выходе усилителя мощных транзисторов TIP142 TIP147, можно сделать простой и мощный усилитель всего на пяти транзисторах. Выходная мощность усилителя 100Вт на нагрузке 8 Ом и достигает 150 Вт на нагрузке 4 Ом. Транзисторы VT3 VT4 VT5 крепятся на одном радиаторе. R9 R10 5Вт.   TIP41 BC556B  Подробнее...
  • Таймер T1 (Arduino)

    Таймер T1 (Arduino)

    В платах Arduino UNO Arduino NANO в 8 битном AVR Atmega168 и Atmega328 есть три таймера Timer0, Timer1 и Timer2. Timer0 8 битный таймер, его счетный регистр может хранить числа от 0 до 255. Timer0 используется функциями Arduino такими как delay() и millis(). Timer1 16 битный таймер, его счетный регистр может хранить …Подробнее...
  • 20Вт усилитель мощность на LM1875 с однополярным питанием

    20Вт усилитель мощность на LM1875 с однополярным питанием

    LM1875 на 20 Вт Электропитание  48 VDC  Выходная мощность  20 W, 4 Ω  КНИ (THD   0.015 %) Встроенная тепловая защита и защита от короткого замыкания  Схема оснащена индикатором включения питания на светодиоде Миниатюрная плата размерами 48 мм x 60 мм     Источник www.anykits.comПодробнее...
  • Генератор на К174УН7 (20…20000Гц)

    На основе К174УН7 можно собрать не сложный генератор с 3 под диапазонами: 20…200, 200…2000 и 2000…20000Гц. ПОС определяет частоту генерируемых колебаний, она построена на элементах R1-R4 и С1-С6. Цепь отрицательной ОС уменьшающая нелинейные искажения сигнала и стабилизирующая его амплитуду образована резистором R6 и лампой накаливания Н1. При указных номиналах схемы …Подробнее...
  • Стандартная цветовая маркировка отечественных транзисторов малой мощности

    Литература — Радиоконструктор 2000-11Подробнее...