Николай
че за шляпа?)))
Anonymous
здравствуйте. Друзья дайте совет. Я создал бот. при отправке команду /оn через группу включается светодиод на esp8266. а при отправке команды
/on@name_bot через группе нет ни какого реакции. как сделать что бы реагировала? использовал botfather
Null
Anonymous
Max
Max
(поправил капитанскую фуражку)
w
//pins for matrix keyboard
//tx - output pins, rx - input pins
uint8_t tx_pins[] = {12,14,16};
uint8_t rx_pins[] = {0,4,5};
WiFiManager wifiManager;
ESP8266WebServer server(80);
void setup() {
#ifdef SERIAL_DEBUG
Serial.begin(115200);
Serial.println("Booting");
#endif
//pinmode
for (byte i = 0; i < sizeof(tx_pins); i++) {
pinMode(tx_pins[i], OUTPUT); //out mode
digitalWrite(tx_pins[i], HIGH); //HIGH - default, LOW - active buttons line
}
for (byte i = 0; i < sizeof(rx_pins); i++) {
pinMode(tx_pins[i], INPUT_PULLUP); //HIGH - default, LOW - active button
}
}
void loop() {
for (byte i = 0; i < sizeof(tx_pins); i++) { //matrix line
digitalWrite(tx_pins[i], LOW); //active this line
delay(50);
for (byte k = 0; k < sizeof(rx_pins); k++) { //recieve ech button state in this line
if(digitalRead(rx_pins[k]) == LOW) { //low - button pressed
#ifdef SERIAL_DEBUG
Serial.print("BTN:");
Serial.print(tx_pins[i]);
Serial.print(",");
Serial.println(rx_pins[k]);
#endif
delay(100);
}
}
digitalWrite(tx_pins[i], HIGH); //unactive this line
delay(50);
}
}
w
Что не так блин.. 16й пин на выход отрабатывает, 12 и 14 всегда вверх
w
я уже сменил еспху) думал пожженные, но нет
Max
Заменить цикл на инициализаию в лоб. Если заработает - подумать, что в цикле не так
Max
Ну и мешать byte и uint8_t некрасиво
Max
Evgen
w
прибором смотрел?
с задержкой мультиметров, осцил где то урыл в завалах. 16й меняется, 14й и 12й нифига. Пробовал 13й - тоже
w
ща в лоб допишу
w
void setup() {
Serial.begin(115200);
Serial.println("Booting");
pinMode(12, OUTPUT);
pinMode(14, OUTPUT);
pinMode(16, OUTPUT);
digitalWrite(12, HIGH);
digitalWrite(14, HIGH);
digitalWrite(16, HIGH);
pinMode(0, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
}
void print_serial(uint8_t out, uint8_t in) {
Serial.print("BTN:");
Serial.print(out);
Serial.print(",");
Serial.println(in);
}
void check_inputs(uint8_t out_pin) {
delay(50);
if(digitalRead(0) == LOW) print_serial(out_pin, 0);
if(digitalRead(4) == LOW) print_serial(out_pin, 4);
if(digitalRead(5) == LOW) print_serial(out_pin, 5);
}
void loop() {
// put your main code here, to run repeatedly:
//stage 1
digitalWrite(12, LOW);
check_inputs(12);
digitalWrite(12, HIGH);
//stage 2
digitalWrite(14, LOW);
check_inputs(14);
digitalWrite(14, HIGH);
//stage 3
digitalWrite(16, LOW);
check_inputs(16);
digitalWrite(16, HIGH);
}
w
гружу
w
ссука, работает
Max
Посмотри принтом, сколько будет sizeof(uint8_t *). Ставлю на 1.
Evgen
Max
Какой тип будет у имени массива?
Max
Хотя поинтер, должно быть 4
Evgen
Max
w
ща уберу сайзоф
w
и const массив обьявлю
Max
А, да, мой косяк. Но просто интересно, что выкинет тамошний компиллятор
Evgen
sizeof uint8_t tx_pins[] = 3
sizeof uint8_t rx_pins[3] = 3
sizeof uint8_t *ptr = 4
Evgen
это esp8266
w
тоже 8266
непомогло, счас размер посмотрим
Evgen
w
w
Serial.println(sizeof(tx_pins)) = 3
w
врод верно
Max
Значит, я был неправ
Max
Но почему в лоб работает, а в цикле хрен?
Evgen
кнопок в наличии нет, повторить не могу... а если пины поменять?
w
ну и раз на 16м работает, значит внутренний аналогичный цикл отрабатывает верно, ловит четко
Max
w
я тут pullup не смог завести, тоже долбался, резисторы засадил)
w
смена порядка пинов в массиве ничего не дает. 16й работает, остальные в хай всегда)
Evgen
я так понимаю клавиатура 3x3
w
да, но ее тоже нет, точнее распаял неверно. Просто одним проводочком тыкаю или смотрю на мультиметр, на 16м прыгает, на остальных нет
w
ладно.. буду в лоб, что ж делать)
Max
А если сделать два цикла - в одном инициализацию, в другом запись?
w
w
проверка инпут пинов на каждый шаг аутпут
Max
Это в начальный код смотрю
w
w
я уже грохнул то все) буду в лоб, сойдет
тут скорость важна
Max
Ну добре
w
в лоб идеально пашет)
Max
Ардуина виновата (ц)
Николай
привет всем)
хотелось бы сделать приложеньку для визуализации, данных с сериала. тип монитора порта, ток с своим функционалом.
пробовал как делал гайвер в обучалке, на питоне... но чет скомпилть в ехе не смог, не зашел мне питон крч
посоветуйте куда развиваться...
пытался сделать на вебчике есп, но это чет медленно все пашет.
Max
Можно на вэбчине и вэбсокетах, будет побыстрее.
Николай
у меня крутиться луп быстро.
Николай
там тайминги жесткие, тормозить его низя
Николай
таски не предлагать, хуйня вышла
Max
Жесткие тайминги и питон?
Николай
не
Николай
вебчик на есп, не зашел
Николай
я про приложеньку на комп
Max
А есп в уарт плевать будет?
Николай
ага
Max
На шарпе можно накидать
Николай
это она делает очень хорошо
Max
Ну или qt
Николай
Qt Designer?
Николай
я делал по урокам гайвера в Qt Designer и PyCharm Community Edition 2021.3.1
Николай
я так понял qt это оболочка , или как?
Serge
Qt Designer?
посмотри исходники SerialStudio, там достаточно толково