Программирование

Вопросы по программированию Arduino.

Прерывания в классе

Я пытаюсь создать класс, который работает с клавиатурой. Я понимаю, что член класса не является правильным форматом функции. Ну все таки я последовал примеру http://www.gammon.com.au/forum/?id=12983. Если присваивать переменной значение в функции pressKey() то выводит ошибку при компиляции   collect2: error: ld returned 1 exit status *** [.pio/build/esp32doit-devkit-v1/firmware.elf] Error 1

не могу принять корректно число

Первая ардуинка отправляет.


Byte BadStatus=7;
Serial1.print(BadStatus);
 delay(3000);

 

Вторая ардуинка принимает. но принимая я уже 55. не понимаю почему я не принимаю просто как байты
readBytes тоже пробывал. все равно 55 принимаю вместо 7

while(Serial1.available()  ) {
BadStatus = Serial1.read(); 
//принимаем код ошибки
disp_refresh=true;
}

 

переобозначить Serial в setup

Доброго времени суток!

Есть конструкция

HardwareSerial & RS485 = Serial1;
HardwareSerial & RS485back = Serial3;

но, она жесткая, а мне нужно в setup иметь возможно переобозначить ее примерно вот так

нужна помощь новичку

#include <GyverButton.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define val
#define B 0
#define p 0
#define OLED_RESET 7
Adafruit_SSD1306 display(OLED_RESET);
GButton b (A5);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextSize(3,3);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  pinMode(A0,INPUT);
  
}

void loop() {
    b.tick();
    val = analogRead(p);
    val = map(val, 0, 1023, 0, 100);
    val = constrain(val, 0, 100);

Таймер обратного отсчёта. Помогите пожалуйста.

//ОШИБКА - Arduino: 1.8.13 Hourly Build 2020/02/19 03:33 (Windows 7), Плата:"Arduino Uno"
 
C:\Users\Админ\Documents\Arduino\sketch_jul30a\sketch_jul30a.ino: In function 'void setup()':
 
sketch_jul30a:26:11: error: 'LEDpin' was not declared in this scope
 
sketch_jul30a:26:18: error: 'i' was not declared in this scope
 
exit status 1
'LEDpin' was not declared in this scope

Проблеммы с работой модуля GPS NEO 6M

Собираю GPS спидометр на таких компонентах: Arduino NANO + GPS NEO 6M + LCD 0,94. Есть под это дело скетч, который был разработан под NEO 7. Путём сравнения вычислил что у них рахная максимальная частота работы, что уже исправил но всё равно нормально не работает. Технические или программные подробности дать не могу так как первый раз с ардуино.

Идея и скетч были взяты отсюда: https://www.youtube.com/watch?v=q4ZA6KtYGRg

Как держать сокет открытым при использовании библиотеки Ethernet

Добрый день. Столкнулся с такой проблемой:
Сделал конвертер ethernet в serial. На конвертер через агрегатор "умного дома" отсылаются команды и принимаются состояния с устройств, подключенных к конвертеру.
Но столкнулся с такой проблемой: если интервал опроса устройств более 500 мс, то конвертер сбрасывает подключение (закрывается сокет). Если меньше 500мс - все отлично работает без сбоев.
Теперь вопрос, каким образом можно держать подключение на конвертере максимально открытым для подключенного клиента в виде агрегатора?

расчет оборотов двигателя по датчику

Привет комрады.

вопрос такой, есть датчик tcrt5000

от оборотов двигателя, получаю импульс через attachInterrupt(0, OkHoll, FALLING);

 

void OkHoll() {
  //int tcn =  TCNT0;
  long mil = millis();
  long raznMilis = mil - HollaTimeOld;
  HollaTimeOld = mil;
  Serial.println(raznMilis);

}

результат raznMilis:

Дисплей 1601A по I2C

Коллеги, подскажите, пожалуйста, можно ли подключить однострочный дисплей 1601A через типовой адаптер I2C (ну, который 0x27)?

А то LiquidCrystal_I2C, даже если сказать (0x27,16,1), явно его знать не хочет и вытворяет несусветное.

 

Ogogon.

Отслеживание -удержания вала (attachInterrupt/detachInterrupt). Все работает-но есть нюанс. И вопрос.

Всем доброго!

Есть такой код, который отслеживает было ли удержание вращающегося вала микродвигателя.

Отслеживание происходит при помощи цифрового датчика Холла и магнитика на валу.

Практически все ок, все работает.

Но в чем проблема: если было короткое удержание вала, и сразу движок рестартил в другую сторону, но удержание сохраняется(и соответственно значение цифрового датчика Холла не изменилось) - он считает, что никакого удержания нет. И продолжает подавать напругу на движок(удерживаемый) -пока тот не сгорит :-)