помогите с счетчиком
- Войдите на сайт для отправки комментариев
Чт, 08/05/2014 - 10:44
здраствуйте вот код в нем есть "digitalRead(6)" к ней подключена кнопка нужно чтобы на LCD16-02
прибовлялось по одной позиции в каждое нажатие сам догнать не могу помогите пожалуйста
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define LCD_I2C_ADDR 0x20
#define BACKLIGHT 7
#define LCD_EN 4
#define LCD_RW 5
#define LCD_RS 6
#define LCD_D4 0
#define LCD_D5 1
#define LCD_D6 2
#define LCD_D7 3
LiquidCrystal_I2C lcd(LCD_I2C_ADDR,LCD_EN,LCD_RW,LCD_RS,LCD_D4,LCD_D5,LCD_D6,LCD_D7);
int sel = 0;
int res = 0;
int start = 0;
int sttop = 0;
int wozv = 0;
void setup()
{
lcd.begin (16,2);
lcd.setBacklightPin(BACKLIGHT,NEGATIVE); // init the backlight
lcd.setBacklight(HIGH); // включить подсветку
lcd.clear(); // очистить дисплей
lcd.setCursor ( 0, 0 ); // положение текста первой строки
lcd.print("popal:"); //текст страки
lcd.setCursor ( 0, 1 );
lcd.print("avto mechen'");
pinMode (2,OUTPUT);//мотор 1
pinMode (3,OUTPUT);//мотор 2
pinMode (6,INPUT);//кнопка подъема
digitalWrite(6, HIGH);//кнопка подъема резистор
pinMode (7,INPUT);//кнопка возврата
digitalWrite(7, HIGH);//кнопка подъема резистор
pinMode (8,INPUT);//кнопка стопа
digitalWrite(8, HIGH);//кнопка подъема резистор
pinMode (9,INPUT);//кнопка сброса
digitalWrite(9, HIGH);//кнопка сброса резистор
pinMode (10,OUTPUT); //сигнал готовность
}
void loop()
{
/////////////////////////////////////////////////////////////////////////////////
res = digitalRead(9); ///////
if (res == LOW) ///////
{ ///////
lcd.setCursor ( 6, 0 ); // положение текста второйстроки строки ///////
lcd.print(" "); //обнуление экрана ///////
sel = 0; //обнуление переменной счетчика ///////
} ///////
///////
lcd.setCursor ( 6, 0 ); // положение текста второйстроки строки ///////
lcd.print(sel); //вывод количества нажатий на start ///////
/////////////////////////////////////////////////////////////////////////////////
sttop = digitalRead(8);
if (sttop == LOW )
{
digitalWrite(2,LOW);
}
wozv = digitalRead(7);
if (wozv == LOW)
{
digitalWrite(3,HIGH);
digitalWrite(2,LOW);
}
start = digitalRead(6);
if (start == LOW)
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
}
}
int satate = 0; int old_state = 0; state = digitalRead(6) if (state != old_state) //Зашита от повтора при нажатой кнопке { old_state = state; if(state == LOW){ //Состояние нажатой кнопки sel++; // Прибавить 1 } delay(50); //Предохранитель от дребезга }if(button == LOW) val ++;
пока писал опередили
int state = 0; int old_state = 0; state = digitalRead(6); if (state != old_state) //Зашита от повтора при нажатой кнопке { old_state = state; if(state == LOW){ //Состояние нажатой кнопки sel++; // Прибавить 1 } delay(50); //Предохранитель от дребезга }спасибо всем а вам огромное спасибо работает
а как обнулить такой счетчик я так понимаю достаточно сбросить значение переменой sel = 0 ?
res = digitalRead(pinin_op); if(res = 0){ sel = 0; Serial.println(sel = 0);} state = digitalRead(pinin); digitalWrite(pinout , state); if (state != old_state) //Зашита от повтора при нажатой кнопке { old_state = state; if(state == LOW){ //Состояние нажатой кнопки sel++; // Прибавить 1 Serial.println(sel); } delay(10); //Предохранитель от дребезга }Правильно понимаете.
Правильно понимаете.
а как это сделать пример ниже так не получается!
int pinin_op = 11; pinMode(pinin_op,INPUT) res = digitalRead(pinin_op); if(res = 0) { sel = 0; }Разберитесь с 4 строкой - тогда и будет получаться
Читаем:= (assignment)
Потом:==
Потом думаем над комментом vdk.
Спасибо vdk
Cпасибо leshak
вои правильный код работает{ без вас бы не разобрался }
int pinin_op = 11; pinMode(pinin_op,INPUT) res = digitalRead(pinin_op); if(res == LOW) { sel = 0; }