Сделал я пару проектов на Digispark :
1. Как сделать самодельный пистолет из Digispark и сломанной игрушки
2. Меняем Arduino на Digispark в светильнике на ws2812. digispark проекты.
И меня засыпали вопросами: Чем отличается от Arduino? Как написать скетч в среде Arduino IDE для Digispark? И пр.
И я решил сделать небольшую заметки для вас и если я что то забуду, можно будет подсмотреть.
Обратите внимание Digispark есть 2 модели А и В. Но нет ни одной статьи чтобы было описаны модели А, а это В.
Но я опытным путем выявил что, это: модель Digispark А
Digispark модель В
Если я ошибаюсь обязательно напишите в комментарии.
Характеристики 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);
}
Понравилась статья? Поделитесь ею с друзьями:
Вернуться в раздел: Обзоры Arduino и электроники Дата публикации 5 марта , 2018
Читайте также
Интересное и немаловажное дополнение - если заранее припаять к портам P3 и P4 что-нибудь, то это может привести к проблемам с распознаванием платы (код ошибки 43) и как следствие вы не сможете загрузить программу. Скорее всего ошибка возникает, потому что эти порты используются USB, но это не очень очевидная проблема с которой мне пришлось столкнуться. Собственно решение - ничего туда не паять до программирования)
У меня черный digispark с usb мигает диодом при использовании P1 (к вопросу о моделях А и В)
По-моему ничего сложного. И чайник разберется
отличная чистота, чтобы быть спокойной в том, что вы хотите, чтобы эта страница была очень хорошей, продолжайте идти одним из лучших
хорошая статья .очень помогла разобраться.спасибо .
Отличная статья.Помогла мне разобраться при проектировании.Было очень интересно узнать аспекты програмирования .
Отличная статья.Помогла мне разобраться при проектировании.Было очень интересно узнать аспекты програмирования
Так держать
Познавательно, для такого чайника, как я. Спасибо что доходчиво объяснили проблемы и решение неполадок при проектировании.
Здравствуйте! Интересная игрушка. Мне кажется от аналогового входа вообще стоит отказаться.
Очень интересная статья... Спасибо большое за просвещение... Мне, как чайнику в этом деле очень пригодилось....
Статья заинтересовала. Ещё в университете хотел научиться программировать железо.Удачи в Ваших исследованиях.
Статья написано нормально и доходчиво, мне помогло разобраться
Довольно понятная статья. Показаны распиновка и необходимые схемы. Спасибо за статью!
На самом деле не много чем различается. Поправьте если ошибаюсь.
Очень интересно и хорошо подробно, может помочь многим людям, лично я собирался пройти курс этого, но я ленился.
Хорошая работа
я начинающий программист самоучка и очень сложно найти полезную информацию по данному вопросу.ваши статьи очень помогают разобраться в мире программирования,благодаря вам обучение проходит быстрее.
Начала заниматься программированием, сначала веб-программированием, а потом понесло, поехало. Скажу вы очень хорошо все описали и статья пригодилась, довольно интересная и не пустышка как часто бывает. Иногда напишут статью, в две книги, но при этом ничего из этого ты не вынес. А тут все четко и по факту!!! Спасибо!!!!
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.