Ви не увійшли.
LGii, Вы ошибаетесь, Вам показалось )
спасибо ребята , я знал что есть еще отзывчивые люди.
если и с таким кодом разобраться не сможете путь один - книжки
#define Button_1 3 ///кнопка 1
#define Led_1 13 ///светик 1
int flag_1 = 0; ///флаг - состояние кнопки 1
void setup()
{
pinMode(Button_1, INPUT); ///пин кнопки 1 на вход
pinMode(Led_1, OUTPUT); ///пин светика 1 на выход
}
void loop()
{
if(digitalRead(Button_1) == HIGH && flag_1 == 0)
{
digitalWrite(Led_1, !digitalRead(Led_1));
flag_1 = 1;
}
if(digitalRead(Button_1) == LOW && flag_1 == 1)
{
flag_1 = 0;
}
}
Ну если по простому то как-то так:
int flag0 = 0;
int flag1 = 0;
int flag2 = 0;
int flag3 = 0;
void setup()
{
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(0, INPUT);
pinMode(1, INPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
}
void loop()
{
//первая кнопка
if (digitalRead(0) == HIGH && flag0 == 0)
{
digitalWrite(10, !digitalRead(10));
flag0 = 1;
}
if (digitalRead(0) == LOW && flag0 == 1)
{
flag0 = 0; //обнуляем переменную flag
}
//вторая кнопка
if (digitalRead(1) == HIGH && flag1 == 0)
{
digitalWrite(11, !digitalRead(11));
flag1 = 1;
}
if (digitalRead(1) == LOW && flag1 == 1)
{
flag1 = 0; //обнуляем переменную flag
}
//третья кнопка
if (digitalRead(2) == HIGH && flag2 == 0)
{
digitalWrite(12, !digitalRead(12));
flag2 = 1;
}
if (digitalRead(2) == LOW && flag2 == 1)
{
flag2 = 0; //обнуляем переменную flag
}
//четвертая кнопка
if (digitalRead(3) == HIGH && flag3 == 0)
{
digitalWrite(13, !digitalRead(13));
flag3 = 1;
}
if (digitalRead(3) == LOW && flag3 == 1)
{
flag3 = 0; //обнуляем переменную flag
}
}
Хотя есть и более красивые решения.
я сам не понимаю как добавить еще количество кнопок ((
а сами вы не можете поменять пины для кнопок и светиков ?
добрый день , помогите с кодом , есть скетч на 1 кнопку и 1 светодиод , нужно добавить еще 4 кнопки и 4 светодиода , принцип работы нажал на кнопку светодиод загорелся , еще раз нажал он потух , надо чтоб добавленные кнопки и светодиоды работали так же и не зависимо друг от друга. вот скетч , но только на 1 кнопку.
int flag=0;
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
if(digitalRead(7)==HIGH&&flag==0)
{
digitalWrite(13,!digitalRead(13));
flag=1;
}
if(digitalRead(7)==LOW&&flag==1)
{
flag=0;//обнуляем переменную flag
}
}
помогите добавить кнопки
хотелось, чтобы при выключении тумблера и пищалка и светик отключались. noTone(ALARM)
а как пищалку будете отключать
Хочу создать примитивнейшую сигнализацию на дверь с помощью зуммера, ультрозвукового дальномера (SR04), переключателя на две позиции, светодиода и собственно ардуино. В программировании полный ноль, но уж очень захотелось сделать самому.
Что я от нее хочу: при одном положении выключетеля - светодиод не горит, сонар не измеряет, в общем все спит. Как только включаю второе положение - задержка на пару сек, чтобы успел отойти, затем загорается светик и начинает работать SR04. При фиксировании изменения начинает пищать зуммер, при том зуммер у меня без генератора, хотелось бы узнать, возможно ли, чтобы при фиксации движения запускался цикл типа:
tone(ALARM, 2000);
delay(100);
и так бесконечно, до тех пор, пока не изменится положение переключателя.
Собственно вопрос в том, как переделать код, чтобы зуммер продолжал пищать и после того, как перестанет фиксироваться движение. Пока смог добиться всего, о чем писал выше, только без начальной задержки и главное, зуммер пищит, только пока фиксируется движение, как только человек проходит, он замолкает
Вот код:
#define ALARM 5
#define LED 7
#define SWITCH 8
int echoPin = 11;
int trigPin = 12;
void setup(){
pinMode(ALARM, OUTPUT);
pinMode(SWITCH, INPUT_PULLUP);
pinMode(LED, OUTPUT);
pinMode(trigPin, OUTPUT);
Serial.begin(9600);
}
void loop (){
int var = digitalRead(SWITCH);
switch(var){
case 1:
digitalWrite(LED, HIGH);
int duration, cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
cm = duration / 58;
delay(10);
/*Serial.println(cm);
delay(300);*/
if (cm<45 || cm>60){
tone(ALARM, 2000);
delay(100);
case 0:
noTone(ALARM);
digitalWrite(LED, LOW);
}
}
}