не работает конока выключения в ночнике

lincona2
Offline
Зарегистрирован: 01.10.2019
Здравствуйте, помогите, разобратся почему не работает конока выключения:
 
задание:
Сигнал с фоторезистора приходит на порт А0 платы Arduino. В соответствии с яркостью в помещении изменяется количество и яркость горящих светодиодов. При нажатии на тактильную кнопку вся программа прекращает свою работу и не реагирует на изменение освящения в помещении.
 
кхопка просто не работает, в чём проблема, 
 
const int sensorPin = 0;
const int buttonPin = 2;
const int ledPin = 9;
int state = 0;
int lightLevel, high = 0, low = 1023;

void showState()
{
while (digitalRead(buttonPin) == LOW){
if (state == 0){
state = 1;
}
else{
state = 0;
};
while (digitalRead(buttonPin) == LOW){ };
};
}

void setup()
{
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9400);
}

void loop()
{
lightLevel = analogRead(sensorPin);
manualTune();
if (state == 0){
analogWrite(ledPin, lightLevel);
};
Serial.print(lightLevel);

int x;
for(x = 0; x < 10; x++){
showState();
delay(25);
};
}

void manualTune()
{
lightLevel = map(lightLevel, 300, 800, 0, 250);
lightLevel = constrain(lightLevel, 0, 250);
}

void autoTune()
{
if (lightLevel < low) { low = lightLevel; } if (lightLevel > high)
{
high = lightLevel;
}
lightLevel = map(lightLevel, low+0, high-30, 0, 250);
lightLevel = constrain(lightLevel, 0, 250);
}

https://www.tinkercad.com/things/gVp7UDCZJhJ-bodacious-turing/editel?sha...

 
спасибо
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

вот не нравятся мне строки 15,16 и 17 (;) R&K не читал )))

lincona2
Offline
Зарегистрирован: 01.10.2019

не понял, удалил ( ; ) не помогло

Komandir
Offline
Зарегистрирован: 18.08.2018

Кнопка не верно подключена.

lincona2
Offline
Зарегистрирован: 01.10.2019

так как её верно подключить ))))

Komandir
Offline
Зарегистрирован: 18.08.2018

Пин 2 подключен на +5, а надо на контакт кнопки. а вот резистор должен быть подключен на +5.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы кнопкой землю на землю замыкаете? Зачем?

lincona2
Offline
Зарегистрирован: 01.10.2019

переделал, -тоже самое

Komandir
Offline
Зарегистрирован: 18.08.2018

Опять не то !!! 

nik182
Offline
Зарегистрирован: 04.05.2015

Выкинуть резистор кнопку замыкать на землю и в сетапе INPUT_PULLUP использовать. И в while HIGH.

Komandir
Offline
Зарегистрирован: 18.08.2018

nik182 с крайней схемой не выйдет.

nik182
Offline
Зарегистрирован: 04.05.2015

Почему?

Komandir
Offline
Зарегистрирован: 18.08.2018

К нулю то ничего не тянет.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ко второму пину подключить резистор 1 ком на минус и кнопку на плюс

Гриша
Offline
Зарегистрирован: 27.04.2014

lincona2 пишет:

переделал, -тоже самое

патамушта кнопку подключают так, а у вас она не по фуншую. ну или для защиты от дурака оставить сопротивление (если оно не больше 1к), но подключить его к минусу, а в коде ее сделать INPUT_PULLUP

UPD. для настройки этого сложного прибора, требуется вольтметр (тестер) включить его в режим измерения напряжения с диапазоном до 10...20В (оптимально). минус прибора подключить к GND, а плюс  прибора к пору ардуино  к которому подключена кнопка. если при нажатии (когда ардуино включено) измеряемое напряжение меняется вы почти у цели - напишите нам эти цифры, подскажем. 

nik182
Offline
Зарегистрирован: 04.05.2015

Гриша. Мне просто интересно. Чем Ваше сообшение отличается от моего #9? Ну кроме того, что Вы не упомянули что условие сравнения надо поменять?

Гриша
Offline
Зарегистрирован: 27.04.2014

nik182 пишет:
Гриша. Мне просто интересно. Чем Ваше сообшение отличается от моего #9? Ну кроме того, что Вы не упомянули что условие сравнения надо поменять?

ссылками, Вы их не указали а то ТС у нас совсем похоже новичек... ему пока сам распишеш ...  а тащить сюда содержимое из ссылок вообще не интересно. Т.е. ваш пост мне понятен, а вот для ТС вообще китайская грамота

ИМХО