PchButik.se

ï»ż

8-siffrors-rÀknare

8 siffrors rÀknare

Hitta komponenter hÀr.

http://pchbutik.se/

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.

8 siffrors rÀknare

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

Koppling 8 siffrors rÀknare

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

Inkoppling till UNO

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;
}
Kodbild SimpelCounter
LED-display och punktmatris

Denna LED-Display och punkt matris har samma IC som drivare. BÄda har 64 lysdioder och drivs av IC:en MAX7219.

Hitta komponenter hÀr.

http://pchbutik.se/