Страница 1 из 1
Arduino из Atmega328 +USBAsp
Добавлено: Ср авг 26, 2020 23:18:49
olegue
Задумал изготовить сабж. Просто Arduno Uno под синтезатор счас занята и не захотел разбирать.
Собрал. Да что там собирать. Кварц подкинул, разьем для программирования распаял,да светодиод на csk. Подключил это все через UsbAsp, залил загрузчик, попробовал скетч Blink - работает.
ЦЕль был с радиопульта от люстры прочитать коды, ну а дальше по ситуации.
ЗАгрузил библиотеку RemoteSwitch, скетч
Короче, как дошло до посмотреть коды, Монитор Компорта не вызывается. Посмотрел, ну да, откуда ж ему взяться.
думал может виртуальные заведу и пойдет. Неа, не прокатило.
Я уже дисплей решил подвесить, но все же думаю, а че нету возможности у ардуины куда еще вывести?
Re: Arduino из Atmega328 +USBAsp
Добавлено: Чт авг 27, 2020 09:15:53
OKF
[uquote="olegue",url="/forum/viewtopic.php?p=3884161#p3884161"]...как дошло до посмотреть коды, Монитор Компорта не вызывается.[/uquote]
Флейтой его нужно вызывать. Своей.) USB-UART называется.
Re: Arduino из Atmega328 +USBAsp
Добавлено: Чт авг 27, 2020 10:28:34
BOB51
В принципе у "стандартной" адуринки (UNO, nano, pro-mini) там два канала - стандартный по умолчанию (аппаратный на Rx/Tx лапки, он же и бутлоадер при включении обеспечивает) и софтовый на любую комбинацию выводов - SoftwareSerial...
Цепляем на те линии преобразователь ТТЛ -->> СОМ (или ТТЛ -->> USB) и работаем через него...

Re: Arduino из Atmega328 +USBAsp
Добавлено: Пт авг 28, 2020 18:03:57
olegue
заморочился . Поставил 1602 экран . I2C у меня не было поэтому распиновал его обычном способом, заняв приличное число выводов
Так как RemoteSwitch опрашивает INT0 (pin2) пришлось пины экрана 2, 3 перебросить на 7, 6. Заодно и INT1 (Pin3) тоже освободил.
Код: Выделить всё
/*
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 6(3)
* LCD D7 pin to digital pin 7(2)
* LCD R/W pin to ground
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
// include the library code:
#include <LiquidCrystal.h>
#include <RemoteReceiver.h>
// initialize the library with the numbers of the interface pins
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
LiquidCrystal lcd(12, 11, 5, 4, 6, 7);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
//Connect the receiver to digital pin 2.-пин 2.это вход для Радиоприёмника
RemoteReceiver::init(0, 3, showCode);
pinMode(8, OUTPUT);
pinMode(13, OUTPUT);
}
void showCode(unsigned long receivedCode, unsigned int period) {
lcd.clear();
lcd.print(":");
lcd.print(receivedCode);
lcd.print(",p:");
lcd.print(period);
lcd.println("");
// обработка нажатия первая кнопка
// код такой то (если включено - выключить, иначе включить)
if (receivedCode==48465)
{
if (digitalRead(8)== HIGH) { digitalWrite(8, LOW);}
else
{ digitalWrite(8, HIGH);}
}
// обработка нажатия вторая кнопка
// код такой то (если включено - выключить, иначе включить)
if (receivedCode==48447)
{
if (digitalRead(13)== HIGH) { digitalWrite(13, LOW);}
else
{ digitalWrite(13, HIGH);}
}
}
void loop() {
}
как я понял все делается в процедуре обрабатывающей прерывания showCode. loop() -не используется.
Добавлено after 3 minutes 20 seconds:
Безо всяких заморочек эту задачу можно было реализовать на микрухах
pt2272
sc2272
просто задав в них соответсвующих код. И обошлось бы дешевле. На али 1.5 у.е за 10 шт. И такая я же цена за 1 шт Атмега 328