| Ваш IP: 3.236.132.132 | Online(26) - гости: 18, боты: 8 | Загрузка сервера: 0.37 ::::::::::::


Плата 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

Комментарии

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

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

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

  • Шунты измерительные стационарные 75ШИС

    Шунты измерительные стационарные 75ШИС

    Шунты измерительные стационарные взаимозаменяемые 75ШИС (далее — шунты), номинальным падением напряжения 75 мВ предназначены для расширения диапазонов измерений показывающих регистрирующих приборов постоянного тока, применяемых на различных объектах сферы обороны, безопасности промышленности. ОПИСАНИЕ Конструктивно шунты выполнены виде перемычек манганина, соединенных методом пайки наконечниками из латуни или меди, укрепленных на пластмассовом основании …Подробнее...
  • Дальний и сверхдальний прием УКВ

    Дальний и сверхдальний прием УКВ

    Качественный прием УКВ возможен на расстояниях значительно превышающих  расстояние прямой видимости. Как известно, Земля окружена газообразной оболочкой — атмосферой, учитывая физические свойства и изменения в качественном составе атмосферы, ее подразделяют на пять областей или сфер. Самый нижний слой, непосредственно прилагающий к поверхности Земли и простирающийся до высоты 11…12 км, называется …Подробнее...
  • Измеритель емкости на NE555

    Измеритель емкости на NE555

    В измерителе емкости используются две микросхемы NE555 (генератор 80Гц и одновибратор). Прибор может измерять емкость конденсаторов от 100 пФ до 10 мкФ. Измерение емкости разделено на пять диапазонов. 1 1мкФ-10мкФ 2 0,1мкФ-1мкФ 3 0,01мкФ-0,1мкФ 4 1000пФ-0,01мкФ 5 100пФ-1000пФ Для калибровки прибора выберите любой диапазон и подключите максимальную емкость для выбранного диапазона, …Подробнее...
  • Трехканальный усилитель для автомобильной аудиосистемы

    Параметры усилителя: Суммарный диапазон воспроизводимых частот 12…20000Гц Максимальная выходная мощность СЧ-ВЧ каналов(Rн=2,7Ом, Uп=14В) 2*12Вт Максимальная выходная мощность НЧ канала(Rн=4Ом, Uп=14В) 24Вт Номинальная мощность СЧ-ВЧ каналов при КНИ 0,2% 2*8Вт Номинальная мощность НЧ канала при КНИ 0,2% 14Вт Максимальный ток потребления 8 А В данной схеме А1 — ВЧ-СЧ усилитель, а …Подробнее...
  • Беспроводное контрольное устройство

    Устройство предназначено для передачи сообщений о наступлении события на расстояние до 1км. Уст-во состоит из передатчика (27МГц) и приемника построенного по схеме прямого преобразования. Задающий генератор построен на VT1 и VT2. Связь усилителя мощности с выходным контуром L4C5 индуктивная при помощи L3. В антенну сигнал поступает непосредственно с этого контура. …Подробнее...