/* števec odskakovanja kontatov
#define tipka 4
int stevec;
bool zadnje_stanje=HIGH;
void setup() {
Serial.begin(115200);
pinMode(tipka,INPUT_PULLUP);
}
void loop() {
bool stanje = digitalRead(tipka);
if(zadnje_stanje != stanje){
stevec++;
zadnje_stanje = stanje;
Serial.println(stevec);
}
}
*/
/* -----------------------------------------------------------------------------------------------------*/
/* preprečitev odskakovanja kontatov s millis()
#define tipka 4
int stevec;
bool zadnje_stanje=HIGH;
unsigned long zadnji_odboj = 0;
int zakasnitev_odboja=200;
void setup() {
Serial.begin(115200);
pinMode(tipka,INPUT_PULLUP);
}
void loop() {
bool stanje = digitalRead(tipka);
if(zadnje_stanje != stanje && (millis()-zadnji_odboj)>zakasnitev_odboja){
zadnji_odboj=millis();
zadnje_stanje = stanje;
if(zadnje_stanje = HIGH){
stevec++;
Serial.println(stevec);
}
}
}
*/
/* -----------------------------------------------------------------------------------------------------*/
/* uporaba zunanje prekinitve
#define tipka 2
#define led 8
volatile bool stanje= LOW;
void setup() {
pinMode(tipka,INPUT_PULLUP);
pinMode(led,OUTPUT);
attachInterrupt(digitalPinToInterrupt(tipka),ISR_tipka, FALLING);
}
void loop() {
digitalWrite(led,stanje);
}
void ISR_tipka(){
stanje = !stanje;
}
*/
/* -----------------------------------------------------------------------------------------------------*/
/*zunanje prekinitev + preprečevanje odskakovanja kontaktov*/
#define tipka 2
#define led 6
volatile bool stanje= LOW;
unsigned long zadnji_odboj = 0;
int zakasnitev_odboja=200;
int stevec,counter;
void setup() {
Serial.begin(115200);
pinMode(tipka,INPUT_PULLUP);
pinMode(led,OUTPUT);
attachInterrupt(digitalPinToInterrupt(tipka),ISR_tipka, FALLING);
}
void loop() {
digitalWrite(led,stanje);
}
void ISR_tipka(){
if((millis()-zadnji_odboj)>zakasnitev_odboja){
stanje = !stanje;
zadnji_odboj=millis();
stevec++;
Serial.print("Števec:");Serial.println(stevec);
}
counter++;
Serial.print("counter:");Serial.println(counter);
}
/* -----------------------------------------------------------------------------------------------------*/
/* uporaba knjižnice bounce2.h
#include <Bounce2.h>
#define tipkaz 3
#define tipkar 4
int stevec;
Bounce2:: Button tipka1, tipka2 = Bounce2::Button();
void setup() {
tipka1.attach(tipkaz, INPUT_PULLUP);
tipka2.attach(tipkar, INPUT_PULLUP);
tipka1.interval(10);
tipka2.interval(10);
tipka1.setPressedState(LOW);
tipka2.setPressedState(LOW);
Serial.begin(115200);
}
void loop() {
tipka1.update();
tipka2.update();
if(tipka1.pressed()){
stevec++;
Serial.println(stevec);
}
if(tipka2.pressed()){
stevec--;
Serial.println(stevec);
}
}
*/
/*
#include <Bounce2.h>
#include <LiquidCrystal.h>
#define tipkaz 3
#define tipkar 4
#define tipkam 5
#define tipkab 2
#define led 6
volatile bool stanje= LOW;
unsigned long zadnji_odboj = 0;
int zakasnitev_odboja=200;
LiquidCrystal lcd(12,11,10,9,8,7);
int stevec;
Bounce2:: Button tipka1, tipka2, tipka3 = Bounce2::Button();
void setup() {
tipka1.attach(tipkaz, INPUT_PULLUP);
tipka2.attach(tipkar, INPUT_PULLUP);
tipka3.attach(tipkam, INPUT_PULLUP);
tipka1.interval(10);
tipka2.interval(10);
tipka3.interval(10);
tipka1.setPressedState(LOW);
tipka2.setPressedState(LOW);
tipka3.setPressedState(LOW);
Serial.begin(115200);
pinMode(led,OUTPUT);
pinMode(tipkab,INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(tipkab),ISR_tipka, FALLING);
lcd.begin(16,2);
}
void loop() {
tipka1.update();
tipka2.update();
tipka3.update();
if(tipka1.pressed()){
stevec++;
Serial.println(stevec);
}
if(tipka2.pressed()){
stevec--;
Serial.println(stevec);
}
if(tipka3.pressed()){
stevec=0;
Serial.println(stevec);
}
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Stevec: ");
lcd.setCursor(10,1);
lcd.print(stevec);
lcd.setCursor(0,0);
lcd.print("LED:");
lcd.setCursor(10,0);
if(stanje== LOW){
lcd.print("OFF");
}
if(stanje== HIGH){
lcd.print("ON ");
}
digitalWrite(led,stanje);
}
void ISR_tipka(){
if((millis()-zadnji_odboj)>zakasnitev_odboja){
stanje = !stanje;
zadnji_odboj=millis();
}
}*/