ï»ż


8-siffrors-rÀknare
En enkel digital rÀknare som inte tar mÄnga portar pÄ ett UNO-kort. Knappen tar en port och displayen tar 3 portar.
Denna koppling kan anvÀndas som varvrÀknare om du lindar en spole och vill veta hur mÄnga varv du har lindat.

Klicka pÄ bilden för att lÀttare se hur det Àr kopplat.

För att fÄ bÀttre kontakt, böj benen pÄ brytaren som ett 'S'

Inkoppling till ett UNO-kort. Displayen AnvÀnder biblioteket 'LedControl'.
Brytaren bör vara av micro-switch typ för att minska kontaktstuds.
Bibloteket 'LedControl' Kan laddas ner frÄn denna sida: https://github.com/wayoda/LedControl
Sketchen 'SimpelCounter'
/* Digitalt rĂ€kneverk, rĂ€knar ett steg upp för varje tryck pĂ„ knappen. Skapad: 2015-03-01 Av: pc_h - pchbutik.se */ // Brytaren kopplas till pinne 2 pĂ„ UNO-kortet. // Ăndra detta till den pinne du vill anvĂ€nda. const int pinneBrytare = 2; // Digital ingĂ„ng kopplad frĂ„n strömbrytaren, andra pinnen av strömbrytaren kopplas till GND #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 senastBrytare = HIGH; void setup() { //Initsiera LED-Displayen lc.shutdown(0,false); lc.setIntensity(0,8); lc.clearDisplay(0); //Initsiera IO pinMode(pinneBrytare, INPUT_PULLUP); DisplayNumber(c); } void loop(){ //Denna rĂ€knar inte nĂ€r brytaren trycks ner. //Men rĂ€knar nĂ€r brytaren har varit nere och slĂ€ppts upp igen. //Kallas för "Positiv flank". //pinneBrytare Ă€r HIGH nĂ€r brytaren INTE Ă€r nertryckt //pinneBrytare Ă€r LOW nĂ€r brytaren Ă€r nertryckt if (digitalRead(pinneBrytare) == HIGH){ if (senastBrytare == LOW){ CountOneUp(); senastBrytare = HIGH; } }else{ senastBrytare = LOW; } } //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; }



