Ви не увійшли.
Візьміть готовий модуль з usb на вході і 2 акумуляторами.
8В для серви забагато до речі.
І для мотора такого теж.
ds3231 вертає неправильний час чи ваш годинник показує неправильний час?
Як взагалі написати змінна А дорівнюе третьому біту змінноі D ?
По ардуінівськи:
є спеціальні функції
https://doc.arduino.ua/ru/prog/BitRead
По avr-івськи
Є макрос
#define _BV(bit) (1 << (bit))
десь так тоді
// якщо вам конче потрібно отримати саме 1 або 0
uint8_t A = D & _BV(bit) ? 1 : 0;
// якщо вас задовольняє те що змінна просто !=0
uint8_t A = D & _BV(bit);
А то можна і так, якщо хочеться байти економити
#define BIT0 1
#define BIT1 (1<<1)
#define BIT2 (1<<2)
#define BIT3 (1<<3)
#define BIT4 (1<<4)
#define BIT5 (1<<5)
#define BIT6 (1<<6)
#define BIT7 (1<<7)
uint8_t A = D & BIT7;
Можна ще придумати кілька способів
Не треба робити бітову магію там де вона не потрібна. Вам, напевно, потрібно виконати якийсь ногодриг з пінами порту? Ну так зробіть функцію з промовною назвою, rotate_left() наприклад, і всередині поставте одиниці і нулі як вам потрібно. Не ускладнюйте.
Заміть 1000 слів - дивіться як зроблено в Arduino
НЯП всередині ISR присідання з атомарністю не потрібні, бо переривання забороняється автоматично.
#if defined(TIM0_OVF_vect)
ISR(TIM0_OVF_vect)
#else
ISR(TIMER0_OVF_vect)
#endif
{
// copy these to local variables so they can be stored in registers
// (volatile variables must be read from memory on every access)
unsigned long m = timer0_millis;
unsigned char f = timer0_fract;
m += MILLIS_INC;
f += FRACT_INC;
if (f >= FRACT_MAX) {
f -= FRACT_MAX;
m += 1;
}
timer0_fract = f;
timer0_millis = m;
timer0_overflow_count++;
}
А ззовні - читайте коментар до коду
unsigned long millis()
{
unsigned long m;
uint8_t oldSREG = SREG;
// disable interrupts while we read millis_timer_millis or we might get an
// inconsistent value (e.g. in the middle of a write to millis_timer_millis)
cli();
m = millis_timer_millis;
SREG = oldSREG;
return m;
}
ISR(PCINT2_vect) {
unsigned char result = r.process();
Так робити стрьомно. ISR повинно виконуватись максимально швидко, а тут викликається якийсь метод з ліби енкодера, хз що він робитиме. Якщо всередині Serial.print, буде ой.
Як правило, регулярні дії (process(), tick(), ..) викликають в loop - там воно точно спрацює як треба.
Якщо в ISR ви щось робите з глобальною змінною, яка більша ніж uint8_t - на цей час треба забороняти переривання. Приблизно так:
ISR()
..
cli();
do_some_sheet
sei();
loop()
..
cli();
do_some_sheet
sei();
Можливо, варто переосмислити постановку задачі. Може не серва потрібна а тупий соленоїд? Є напруга - одне положення, немає напруги - інше положення..
https://stackoverflow.com/questions/71579926/how-to-use-micropython-classes-in-separate-files
ЗІ Щось форум якось дивно працює. Походу сєкрєт настройкі phpbb утєрян
. Тільки я би для зручності перевернув полярність діодів
В уже спаяному кубі це не просто
Не бажаєте схему показати?
Вам потрібно, щоб струм через світлодіоди був стабільний, без залежності скільки їх ввімкнено? тоді на кожен led в групі - окремий резистор (16 шт). І порахуйте який потрібен струм, може mosfet лишній.
Якщо 1 резистор на групу з 16 led - в залежності від кількості ввімкнених led яскравість буде мінятися.Можна спробувати скомпенсувати часом експозиції - підібрати резистор, щоб нормально світились всі 16, а коли менше - зменшувати час, але це буде багато веселих дослідів
Алгоритми DSP вже працюють?
Це тільки ідея..
https://gridbots.com/bat.html
Я радий за індійців
для якого застосування?
Є ідея записати звук з 4 мікрофонів, знайти схожі паттерни і порахувати різницю фаз. Теорія здається красивою Але як воно пролізе через кілька шарів абстракцій заліза і софта..
Надійніше звичайно взяти нормальний АЦП і навертіти навколо нього, але це зовсім іншого рівня задача, зовсім не бюджетна. Підходящих готових плат на arduino.ua я не побачив. А досить пристойної якості АЦП в свистку за 100 грн готовий
Чи є вироби з аналогічною функціональністю на ринку?
Кажуть що ні.
Є трохи дивна ідея - багатоканальний аудіо реєстратор на базі дешевих USB аудіокарт. Raspberry Pi + USB hub + 4 свистка. Як вважаєте, взлетить? Не буде між свистками конфліктів? Пропускної здатності USB вистачить?
Підключення згідно з документацією
Ну якщо термінала ніт, і не буде, то розмови про його підключення не мають ніякого смислу. Подумайте про інші способи прийому платежів. QR код наприклад.
Хочу зробити щось типу вєндінгового поштома
Це як би досить різні речі.
Я не знаю, яка потрібна CRM.
Ніхто крім вас не знає. Це ж ваш проект
Почніть з самого початку. На платіжний термінал, як правило, звідкись потрапляє сума платежу. Беріть документацію на ваш термінал і читайте, як це зробити.
А може вам і не потрібен термінал? Може вас задовольнить оплата QR кодом, наприклад? Яка у вас планується бізнес-модель?
Найбільша проблема - підключення.
Підключення реле тут найменша проблема.
Можна і так. Тільки платіжна система нічого не знає про ваші кнопки і реле. Вона вміє тільки проводити платежі. Потрібна CRM, яка уміє співставити номер ящика з номером платежу, і безпечно передати цю інформацію до правильного ящика.
Але у вас виходить не поштомат, а вендінговий автомат. Чи автомат для гри в Bad Secret Santa. Для поштомата потрібен ще якийсь фактор, крім оплати. В НП - дотаток, з ключом, прив"язаним до вашого аккаунту.
Реле підключається за типовою схемою, через ключовий транзистор. Але ви ж не про це питаєте, правда? Мабуть у вас є якась CRM, в ній є якесь API для взаємодії з виконачими механізмами. MQTT, або REST, або інше, згідно з вашими уявленнями про прекрасне. Якась авторизація, з сертифікатами, чи токенами. І під цю схему ви підбрали якийсь більш-менш захищений контроллер - ви ж не хочете, щоб механізм сам спрацював, бо хакери проаналізували прошивку і витягли ключі?
Ну, десь так.
Тому, щоб отримати корисні поради, потрібно давати більше інформації про проблему.
Як правило, коли людина досить детально формулює питання, вона вже на 50% це питання вирішила.
Термінал до реле не треба хотіти підключати. Треба хотіти підключати термінал до платіжної системи - банк, якому вона належить, надасть вам всю доку. До платіжної системи треба підключити ваш самописний біллінг, до біллінга - реле.
До речі, прошу звернути увагу, поштомат НП ніяких платежів не приймає, і це правильно.
Це проект не для початківця.
І не для одної людини. Потрібен залізячник, який спроектує сам ящик. Програміст, який напише код. Слюсар, який все змонтує. Тестувальник. Навряд чи все це буде 1 людина.
1000 баксів в місяць / 20 робочих днів = 50 баксів в день, думаю, справедливо, як для початківця
З оптроном і двигуном теж треба уважно.
З електрикою треба бути уважно взагалі. 1 лишній рух - і білий дим, транзистори в чіпі вибирають нового папу
29 В - скоріше за все силовуха, скоріше за все двигун. Я за оптронну розв"язку.
ethernet і snmp - це ближче до домашнього датацентру чи розумного дому з виділеним сервером. Моя ідея - для пересічних, хто акумулятор і інвертор купив, і зрозумів що чогось не хватає
Колись давно, 2 роки тому, скрафтив нашвидкуруч гаджет, що малює графік напруги на домашньому акумуляторі. Зручна виявилась штука, завжди видно чи є вдома світло і коли час заводити генератор
https://github.com/Ihor-Chu/power-monitor
Працює дуже просто: через кожні 4 хв вимірюється напруга, відправляється на сайт thingspeak.com, там і малюються графіки.
Безплатного тарифного плану вистачає на 3 млн точок - більше 2 років. А там можна і перешити. На жаль, чим прошивав не пам"ятаю, стандартна прошивалка від ESP01, якщо не помиляюсь, дає 5В живлення, якщо хтось захоче повторити - майте на увазі.
Всередині - noname dc-dc конвертор на 5В і ESP12. Після прошивки потрібно відкалібрувати дільник напруги - подати кілька напруг з робочого діапазону і записати їх через інтерфейс для калібрування http://192.168.4.1/cm . Можна використовувати і з іншими напругами, тільки треба взяти підходящий конвертор і підібрати дільник, щоб на вхід ADC не пішло більше 1В. Так, щоб воно працювало, необхідно щоб домашній провайдер не падав при відключенні енергії