ï»ż

Kontaktstuds

Alla brytare har kontaktytor som studsar nÀr de slÄs ihop.
Detta kan göra att rÀknaren hoppar ett par steg nÀr du trycker.
Det finns flera sÀtt att ta bort eller minska studsen.
Tycker att det lÀttaste sÀttet Àr vÀxlande strömbrytare, och att den mÄste vÀxla frÄn en kontakt till en annan innan det rÀknar ett steg.

Denna brytare rÀknar bra, för den har inte mycket studs.
Men tryck slarvigt pÄ brytaren, sÄ gÄr det fel ibland.
Bibloteket 'LedControl' Kan laddas ner frÄn denna sida: https://github.com/wayoda/LedControl
/* Digitalt rĂ€kneverk, rĂ€knar ett steg upp för varje tryck pĂ„ knappen. Studsfri koppling med en vĂ€xlande brytare. Skapad: 2015-03-06 Av: pc_h - pchbutik.se */ // Brytaren kopplas till pinne 2 och 3 pĂ„ UNO-kortet. // Ăndra detta till den pinne du vill anvĂ€nda. //Gemensamma pinnen kopplas till GND const int pinneBrytareNere = 2; // Digital ingĂ„ng kopplad frĂ„n strömbrytarens nedre slutare NO (Normal Opend) const int pinneBrytareUppe = 3; // Digital ingĂ„ng kopplad frĂ„n strömbrytarens övre slutare NC (Normal Closed) #include "LedControl.h" /* Pinnarna frĂ„n LED-Displayen kopplas sĂ„ hĂ€r till UNO-kortet DIN kopplas till UNO pinne 12 CLK kopplas till UNO pinne 11 CS kopplas till UNO pinne 10 */ LedControl lc=LedControl(12,11,10,1); //Ettan betyder att vi har en Display i kaskaden. unsigned long c = 0; boolean HarVaritUppe = true; void setup() { //Initsiera LED-Displayen lc.shutdown(0,false); lc.setIntensity(0,8); lc.clearDisplay(0); //Initsiera IO pinMode(pinneBrytareNere, INPUT_PULLUP); pinMode(pinneBrytareUppe, INPUT_PULLUP); DisplayNumber(c); } void loop(){ //Denna rĂ€knar nĂ€r brytaren trycks ner. //Men rĂ€knar bara om brytaren varit uppe. if (digitalRead(pinneBrytareUppe) == LOW){ HarVaritUppe = true; } if (digitalRead(pinneBrytareNere) == LOW){ if (HarVaritUppe == true){ CountOneUp(); HarVaritUppe = false; } } } //Varje gĂ„ng denna anropas ökar talet c ett steg upp void CountOneUp() { c = c + 1; //RĂ€knar ett steg upp DisplayNumber(c); } //Skriver ut ett tal. void DisplayNumber(unsigned long number){ if(number > 99999999){ DisplayString("E9"); //Betyder Error 9, talet Ă€r för högt return; } String s = String(number); DisplayString(s); } //Skriver ut en strĂ€ng. void DisplayString(String s){ int l = s.length(); if(l > 8){ s = "E8"; //Betyder Error 8, strĂ€ngen Ă€r för lĂ„ng l = s.length(); } lc.setChar(0, 7, getChar(s, l-8), false); lc.setChar(0, 6, getChar(s, l-7), false); lc.setChar(0, 5, getChar(s, l-6), false); lc.setChar(0, 4, getChar(s, l-5), false); lc.setChar(0, 3, getChar(s, l-4), false); lc.setChar(0, 2, getChar(s, l-3), false); lc.setChar(0, 1, getChar(s, l-2), false); lc.setChar(0, 0, getChar(s, l-1), false); } //Denna returnerar vilket tecken som Ă€r pĂ„ platsen i strĂ€ngen. //Ăr platsen utanför strĂ€ngen returneras ett blanksteg. char getChar(String s, int i){ char rc = ' '; if(s.length() > i ){ rc = s.charAt(i); } return rc; }
Denna sida Àr konverterad med hjÀlp av AI.
Skapad av Per-Anders Hult för PchButik.se.




