Ви не увійшли.
Плата одностороння, там лише одна перемичка між опором та масою
тогда как подключена кнопка к пину ардуины? Судя по огрызку с рисунком платы кнопка (самый нижний проводник?) подходит к одному выводу резистора, второй конец резистора на gnd(?), а к пину как? Тоже навесным проводом?
Куча вопросов.
1. Что собой представляет механизм открывания (схемотехнически)? Разводка платы если правильно понял - двусторонняя?
2. Если из кода убрать все что касается карточки - тоже зависает?
3. Если после включения карту не подносить, а сразу нажать кнопку - что происходит?
Ну и повторюсь, с этим кодом кнопка не должна срабатывать. Эти строки
if ( ! mfrc522.PICC_IsNewCardPresent()){
return;
}
крутятся к цикле пока не будет поднесена карта и код дальше не должен выполняться. Перенеси обработку кнопки в начало loop.
На карточку більше нереагує
Вообще-то на кнопку не должно быть никакой реакции при таком построении кода. Так что схему в студию. И желательно нормальную (хоть и на листочке от руки), а не наскальную живопись из всяких там фритцингов и тинкеркадов
при натисканні на кнопку ардуіна зависа
В чем это выражается?
В соседних темах уже была и кнопка и серва
да, посмотрел
Ну судя по всему смотрел не туда куда надо. Хотя на это
почему при нажатии столько раз нажимает на кнопки
тоже надо обратить внимание. Только проблема у тебя в другом. Если бы ты внимательно смотрел на сообщения, то заметил бы что у тебя сразу при старте идут сообщения что левая и правая кнопка нажата хотя их никто не трогал. А когда ты нажимаешь любую из них, то идет сообщение что кнопка отжата.
Что касается большого количества нажатий - по умолчанию вокви симулирует реальную кнопку с ее дребезгом. Почитай как с этим бороться (только в реальности, а не в симуляторе, там это отключается в настройках).
Ну и вернемся к нашим баранам PULLUP. Объясни что ты делаешь в этой
if(!digitalRead(pin_f) == 1)
и подобных строках?
Ты с PULLUP разобрался? Код запускал, что тебе пишет в сериал?
И тишина ...
Испугался что-ли? Так здесь не кусаются. Или не знаешь что ответить? Ок, пойдем наглядным путем. Вот твой код без лишнего "мусора", только кнопки. Запусти и попробуй разобраться что у тебя не так.
boolean butt_flag1 = 0;
boolean butt1;
boolean butt_flag2 = 0;
boolean butt2;
void setup() {
Serial.begin(9600);
pinMode(11,INPUT_PULLUP);
pinMode(12,INPUT_PULLUP);
}
void mouse_move(){
butt1 = digitalRead(12);
butt2 = digitalRead(11);
if(butt1 == 1 && butt_flag1 == 0){
butt_flag1 = 1;
Serial.println("MOUSE_LEFT_PRESS");
//Mouse.press(MOUSE_LEFT);
}
if(butt1 == 0 && butt_flag1 == 1){
butt_flag1 = 0;
Serial.println("MOUSE_LEFT_NO PRESS");
//Mouse.release();
}
if(butt2 == 1 && butt_flag2 == 0){
butt_flag2 = 1;
Serial.println("MOUSE_RIGHT_PRESS");
//Mouse.press(MOUSE_RIGHT);
}
if(butt2 == 0 && butt_flag2 == 1){
butt_flag2 = 0;
Serial.println("MOUSE_RIGHT_NO PRESS");
//Mouse.release();
}
}
void loop() {
mouse_move();
}
без ! 1 а так при инверции 0
Чего?! А ну-ка поподробней, нормальными словами
как то так
Блин, что за люди, неужели тяжело нормально нарисовать, чтобы ничего не сливалось !?
Ладно, если ты действительно читал за PULLUP, какой уровень у тебя на пине при не нажатой кнопке?
Почитай что такое INPUT_PULLUP и как с ним работать
Круто! А у меня и это не получается!
akapulko пише:В чем проблема? Нужно HIGH, "скажите" - LOW и наоборот, раз так вопрос ставите.
Это легко держать в уме когда проект небольшой.
Используй макросы. Типа так
#define PIN_ON LOW
#define PIN_OFF HIGH
void setup() {
pinMode(13,OUTPUT);
}
void loop() {
digitalWrite(13,PIN_OFF);
delay(1000);
digitalWrite(13,PIN_ON);
delay(1000);
}
Использую arduino ide.
Само ардуино иде ничего не знает об атмега48. Ей нуна для этого какое-то ядро подсунуть. Вот я и спрашиваю чем? Может это ядро кривое и нуна другое паискать
Прошиваю, через Usbasp
А чем канпилируишь?