Основы программирования Digispark в среде Arduino IDE. Модели A и B

.Основы программирования Digispark в среде Arduino IDE. Модели A и B

Сделал я пару проектов на Digispark :
1. Как сделать самодельный пистолет из Digispark и сломанной игрушки
2. Меняем Arduino на Digispark в светильнике на ws2812. digispark проекты.

И меня засыпали вопросами: Чем отличается от Arduino? Как написать скетч в среде Arduino IDE для Digispark? И пр.

И я решил сделать небольшую заметки для вас и если я что то забуду, можно будет подсмотреть.
Обратите внимание Digispark есть 2 модели А и В. Но нет ни одной статьи чтобы было описаны модели А, а это В.
Но я опытным путем выявил что, это: модель Digispark А

модель Digispark А


Digispark модель В

Digispark модель В



Если я ошибаюсь обязательно напишите в комментарии.


Характеристики Digispark:

  • Поддержка Arduino IDE 1.0 и более поздних (OS X, Windows и Linux)
  • Питание от USB или внешнего источника - 5 В или 7-35 V (автоматический выбор)
  • Регулятор на 5В 500мА
  • Встроенный USB
  • 6 портов ввода / вывода (2 используются для USB, только если ваша программа активно общается по USB, в противном случае вы можете использовать все 6, даже если вы программируете с помощью USB)
  • 8KB флэш-памяти (около 6КБ с загрузчиком)
  • I²C и SPI интерфейс
  • PWM на 3 вывода (больше ШИМ выходов можно обеспечить программным способом)
  • сделан на базе ATtiny85-20SU микроконтроллера

Характеристики Digispark


Все выводы могут быть использованы в качестве цифровых входов/выходов:
Pin 0 → I2C SDA, PWM (LED on Model B)
Pin 1 → PWM (LED on Model A)
Pin 2 → I2C SCK, Analog
Pin 3 → Аналоговый вход (Занят контактом USB+, в случае использования USD)
Pin 4 → PWM (Занят контактом USB-, в случае использования USD)
Pin 5 → Аналоговый вход

В Digispark поддерживает всех функции, доступные в IDE, исключением является серийный монитор и запись загрузчика.

Но не смотря на все плюсы Digispark все же отличается от Arduino. Вот список некоторых различий, которые стоит учитывать при проектировании или устранении неполадок:
1. Digispark сделан базе Attiny85 у которго есть много отличий от ATmega328 Arduino, и некоторые библиотеки могут работать некорректно на нем.
2. У Digispark имеется только около 6 КБ флэш-памяти для хранения вашего кода.
3. Контакт 3 и контакт 4 (P3 и P4) используются для связи через USB и программирования. Поэтому использовать данные пины при программировании нельзя. Их можно пользовать, когда у вас отключен USB.
4. Контакт 3 (P3) к нему подключен нагрузочный резистор 1,5 кОм, который требуется, когда P3 и P4 используются для связи через USB. Вам возможно потребоваться учесть данный факт при работе с данным пином.
5. Digispark не имеет аппаратного последовательного порта или аппаратного последовательного интерфейса к USB-конвертеру.

Пример использования цифрового выхода.
Все контакты способны к цифровому выходу, хотя P5 составляет 3 В при HIGH вместо 5 В.
0 - P0, 1 - P1, 2 - P2 и т. д. - обозначение пинов в программе.

void setup() {
    //All pins are capable of Digital output, though P5 is 3 V at HIGH instead of 5 V
    pinMode(0, OUTPUT); //0 is P0, 1 is P1, 2 is P2, etc. - unlike the analog inputs, for digital outputs the pin number matches.
}
void loop() {
    digitalWrite(0,HIGH); //Turn the pin HIGH (5 V)
    delay(1000);
    digitalWrite(0,LOW); //Turn the pin LOW (GND)
    delay(1000);
}

Пример использования цифрового входа (чтение).
ПРИМЕЧАНИЕ. Внутренний нагрузочный резистор (включается при вызове digitalWrite (0) после установки вывода на вывод, где 0 - номер штыря) намного слабее (около 25 кОм) на ATtiny, чем на Arduino, поэтому бортовой светодиод может помешает. Если они вам нужен, вы можете использовать другой порт. Измените схему, чтобы не требовалось внутреннее подтягивание, или вырезать светодиодную дорожку. Для модели A это пин P1 для модели B, это ппин P0.

int sensorValue = 0;

void setup() {
    //All pins are capable of digital input.
    pinMode(0, INPUT); //0 is P0, 1 is P1, 2 is P2, etc. - unlike the analog inputs, for digital inputs the pin number matches.
}
void loop() {
    sensorValue = digitalRead(1); //Returns HIGH or LOW (true or false / 1 or 0).
}

Пример аналогового чтения
Буте внимательны при аналоговом чтении, номера пинов отличаются от нумерации на плате. Например: P2 - аналоговый вход 1. Остальные смотрите в коде ниже.

int sensorValue = 0;

void setup() {
    //You need not set pin mode for analogRead - though if you have set the pin to
    //output and later want to read from it then you need to set pinMode(0,INPUT);
    //where 0 is the physical pin number not the analog input number.
    //
    //See below for the proper pinMode statement to go with each analog read.
}
void loop() {
    // The analog pins are referenced by their analog port number, not their pin
    //number and are as follows:

    sensorValue = analogRead(1); //Read P2
    //To set to input: pinMode(2, INPUT);
    //THIS IS P2, P2 is analog input 1, so when you are using analog read, you refer to it as 1.

    //sensorValue = analogRead(2); //Read P4
    //To set to input: pinMode(4, INPUT);
    //THIS IS P4, P4 is analog input 2, so when you are using analog read, you refer to it as 2.

    //sensorValue = analogRead(3); //Read P3
    //To set to input: pinMode(3, INPUT);
    //THIS IS P3, P3 is analog input 3, so when you are using analog read, you refer to it as 3.

    //sensorValue = analogRead(0); //Read P5
    //To set to input: pinMode(5, INPUT);
    //THIS IS P5, P5 is analog input 0, so when you are using analog read, you refer to it as 0.
}

Аналоговый выход
Тут все проще 0 - P0, 1 - P1, 4 - P4 - в отличие от аналоговых входов, для аналоговых (PWM) выходов номер штыря соответствует номеру порта.

void setup() {
    //P0, P1, and P4 are capable of hardware PWM (analogWrite).
    pinMode(0, OUTPUT); //0 is P0, 1 is P1, 4 is P4 - unlike the analog inputs, 
                        //for analog (PWM) outputs the pin number matches the port number.
}
void loop() {
    analogWrite(0,255); //Turn the pin on full (100%)
    delay(1000);
    analogWrite(0,128); //Turn the pin on half (50%)
    delay(1000);
    analogWrite(0,0);   //Turn the pin off (0%)
    delay(1000);
}

Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.

Спасибо за внимание!

Вернуться в раздел: Программирование и отладка в Arduino IDE Дата публикации 5 марта , 2018

Комментарии

Ваше Имя*
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.

Ирина
#23 Гость: Ирина (6 апреля, 2019 в 18:56)

По-моему ничего сложного. И чайник разберется

Marlene Monasterios
#22 Гость: Marlene Monasterios (11 марта, 2019 в 19:45)

отличная чистота, чтобы быть спокойной в том, что вы хотите, чтобы эта страница была очень хорошей, продолжайте идти одним из лучших

Геннадий Котельников
#21 Гость: Геннадий Котельников (11 марта, 2019 в 19:44)

хорошая статья .очень помогла разобраться.спасибо .

Бойко
#20 Гость: Бойко (11 марта, 2019 в 19:44)

Отличная статья.Помогла мне разобраться при проектировании.Было очень интересно узнать аспекты програмирования .

Валера
#19 Гость: Валера (11 марта, 2019 в 19:43)

Отличная статья.Помогла мне разобраться при проектировании.Было очень интересно узнать аспекты програмирования

Никита Сакавец
#18 Гость: Никита Сакавец (11 марта, 2019 в 19:43)

Так держать

Татьяна Ротарь
#17 Гость: Татьяна Ротарь (11 марта, 2019 в 19:42)

Познавательно, для такого чайника, как я. Спасибо что доходчиво объяснили проблемы и решение неполадок при проектировании.

Евсей Петров
#16 Гость: Евсей Петров (11 марта, 2019 в 19:42)

Здравствуйте! Интересная игрушка. Мне кажется от аналогового входа вообще стоит отказаться.

Никита Рак
#15 Гость: Никита Рак (11 марта, 2019 в 19:42)

Очень интересная статья... Спасибо большое за просвещение... Мне, как чайнику в этом деле очень пригодилось....

Артур
#14 Гость: Артур (11 марта, 2019 в 19:41)

Статья заинтересовала. Ещё в университете хотел научиться программировать железо.Удачи в Ваших исследованиях.

Артур Нахалов
#13 Гость: Артур Нахалов (11 марта, 2019 в 19:40)

Статья написано нормально и доходчиво, мне помогло разобраться

Сергей Винниченко
#12 Гость: Сергей Винниченко (11 марта, 2019 в 19:40)

Довольно понятная статья. Показаны распиновка и необходимые схемы. Спасибо за статью!

Артур Загацкий
#11 Гость: Артур Загацкий (11 марта, 2019 в 19:40)

На самом деле не много чем различается. Поправьте если ошибаюсь.

Eddy Piñango
#10 Гость: Eddy Piñango (11 марта, 2019 в 19:39)

Очень интересно и хорошо подробно, может помочь многим людям, лично я собирался пройти курс этого, но я ленился.

Хорошая работа

Константин Трофимов
#9 Гость: Константин Трофимов (11 марта, 2019 в 19:39)

я начинающий программист самоучка и очень сложно найти полезную информацию по данному вопросу.ваши статьи очень помогают разобраться в мире программирования,благодаря вам обучение проходит быстрее.

Diana Raina
#8 Гость: Diana Raina (11 марта, 2019 в 19:39)

Начала заниматься программированием, сначала веб-программированием, а потом понесло, поехало. Скажу вы очень хорошо все описали и статья пригодилась, довольно интересная и не пустышка как часто бывает. Иногда напишут статью, в две книги, но при этом ничего из этого ты не вынес. А тут все четко и по факту!!! Спасибо!!!!

Анатолий Катомка
#7 Гость: Анатолий Катомка (11 марта, 2019 в 19:38)

Статья заинтересовала. Ещё в универе хотел научиться программировать железо.Удачи в Ваших исследованиях.

Виталик Иванов
#6 Гость: Виталик Иванов (11 марта, 2019 в 19:38)

Мне нравятся основы программирования

Виталик
#5 Гость: Виталик (11 марта, 2019 в 19:37)

Я рад что ты пишиш такие интересные статьи

Сергей Рясков
#4 Гость: Сергей Рясков (11 марта, 2019 в 19:37)

полезной информации я даже впечатлен, я узнал для себя что то новое!

Яндекс.Метрика

Top.Mail.Ru

Portal-PK (Портал ПК) © 2015 - 2019 Робототехника на F-studio.biz
Обратная связь
Подписаться на новости
RSS