Код (C++): #include <EEPROM.h> #include <SoftwareSerial.h> int val; int val2; int PinLed = 13; int PinIn = 8; int buttonState = 0; // переменная для хранения состояния кнопки void setup(){ Serial.begin(9600); pinMode(PinLed, OUTPUT); // устанавливает режим работы - выход pinMode(PinIn,INPUT); //Устанавливает режим работы - вход } void loop(){ if (Serial.available() > 0) { //если число передали то значение больше 0 val = Serial.read();//прочитали число val = val - 48;//получили то число которое ввели, при вводе 0 получаем 48 и мы избавились от этого EEPROM.write(0, val);//записали в первую ячейку (0) val2 = EEPROM.read(0);//прочитали из нее записанное и можем делать что угодно buttonState = digitalRead(PinIn); digitalRead(PinIn); // считываем значения с входа кнопки if (buttonState == HIGH) { digitalWrite(PinLed, HIGH); // включаем delay(val2 * 1000); } else { // выключаем светодиод digitalWrite(PinLed, LOW); } } } Вот так получается? только всё равно не катит(
Код (C++): #include <EEPROM.h> #include <SoftwareSerial.h> int val; int val2; int PinLed = 13; int PinIn = 8; int buttonState = 0; // переменная для хранения состояния кнопки void setup(){ Serial.begin(9600); pinMode(PinLed, OUTPUT); // устанавливает режим работы - выход pinMode(PinIn,INPUT); //Устанавливает режим работы - вход } void loop(){ if (Serial.available() > 0) { //если число передали то значение больше 0 val = Serial.read();//прочитали число val = val - 48;//получили то число которое ввели, при вводе 0 получаем 48 и мы избавились от этого EEPROM.write(0, val);//записали в первую ячейку (0) val2 = EEPROM.read(0);//прочитали из нее записанное и можем делать что угодно buttonState = digitalRead(PinIn); buttonState = digitalRead(PinIn); // считываем значения с входа кнопки if (buttonState == HIGH) { digitalWrite(PinLed, HIGH); // включаем delay(val2 * 1000); } else { // выключаем светодиод digitalWrite(PinLed, LOW); } } }
Вообще запутался сейчас, в итоге отправляю через ком 1, если пин 8 0, то не включается, если пин 8 1, то включается и горит постоянно...
Может светодиод сгорел? Кнопку точно правильно поставил? Если 4 контакта у кнопки легко попасть впросак если нет мультиметра. Пару контактов кнопки правильно определил?
Ага, после делей добавил, прокатило, но всё равно блин не включается при нажатии кнопки) включается, только при подаче цифры через ком порт)
А фишка как раз, в том чтоб с кнопки управлять) Такое ощущение, что ардуинка ждет, когда же упадет цифра в ком порт, вместо, того что бы, управлять с кнопки...
Попробуй Код (C++): #include <EEPROM.h> #include <SoftwareSerial.h> int val; char input; int val2; int PinLed = 13; int PinIn = 8; int buttonState = 0; // переменная для хранения состояния кнопки void setup(){ Serial.begin(9600); pinMode(PinLed, OUTPUT); // устанавливает режим работы - выход pinMode(PinIn,INPUT); //Устанавливает режим работы - вход } void loop(){ if (Serial.available() > 0) { //если число передали то значение больше 0 input = Serial.read();//прочитали число val = atoi(input); EEPROM.write(0, val);//записали в первую ячейку (0) val2 = EEPROM.read(0);//прочитали из нее записанное и можем делать что угодно } buttonState = digitalRead(PinIn); // считываем значения с входа кнопки if (buttonState == HIGH) { digitalWrite(PinLed, HIGH); // включаем delay(val2 * 1000); digitalWrite(PinLed, LOW); }
Смотри... Там был огромный и незаметный косяк. Ты цикл с кнопкой сделал вложенным в цикл проверяющий пришло ли число. Если число не пришло, то оно и не доходило до проверки кнопки
Ааа, это {}? они во всем виноваты?) А почему сейчас число не меняет время, и диод на половину светит?
Ну то, что упала яркость это не кода вина. Если ты подключил светодиод напрямую, а не через резистор, то он просто сгорел походу. Или пин ардуино. Попробуй замени пин на выход. Там только 40 миллиампер можно брать, а сколько мог потащить свотодиод....
отпраляю 1 по ком порту, он в пол накала светит, отправляю 2 и больше, светит нормально, но цифры больше не секунды... val = val - 48; наверное из-за этого?