Kul Shway Display (21 / 21 steg)

Steg 21: Mitt program

/*

11-11-2012 stråle McQueen

LCD linje 1 dag och tid
LCD linje 2 temp avläsningar

6 knappar på analoga A0
Någon knapp aktiveringen vänder sig på rygg ljus i 2 minuter.
Den svala delen om knappen config är att
valfri knapp kan anges på knapp 1, 2, 3, 4, 5 eller 6.

LM335 och LM334Z temp givare används.
Temperaturkompensationen är justerbar.

*/
//
//
CONST int
//
CONST int lcd_datapin = 6; 74HC164 stift 1
CONST int lcd_clk = 5; 74HC164 stift 8
CONST int lcd_E = 4; LCD E line
CONST int lcd_RS = 3; LCD-RS linje
CONST int ljus = 2; / / Back light output
//
Analoga grejer
//
A0-knappar
A1 - On board tempsensor.
A2 - inne temp sensor.
A3 - Outside temp sensor.
//
//
KLOCKAN GREJER
INGA NEGATIVA TAL
osignerade långa time_begin;
osignerade långa time_duration;
osignerade långa time_remain;
osignerade långa time_val;
unsigned int time_seconds = 0; / / butiker antalet sekunder
unsigned int time_minutes = 0; / / butiker i minuter. Den
klockan startar på antalet minuter lagrat här reset.
unsigned int time_hours = 12; / / butiker antalet timmar. Klockan
startar på antalet timmar lagrad här på resten.
unsigned int time_days = 0; / / butiker antalet dagar
Används för att räkna upp till en uppsättning händelse.
unsigned int event_seconds1 = 0; / / lagring av sekunder räkna
//
//
LCD grejer
//
int lcd_C = 0; Karaktär som ska skiftas
int lcd_D = 0; Karaktär som ska skiftas
int lcd_N = 0; Antalet tecken att skicka till lcd
int lcd_i = 0; Används för looping
int lcd_set = 0; / / används för att lagra vilken setup för att få
int lcd_A = 0; / / används för att välja aray att använda
int lcd_Z = 0; Används i LCD-char testning
//
//
Används av cracker
//
int val1000s = 0; / / registrera dig för att hålla 1000 greve
int val100s = 0; / / registrera dig för att hålla 100 count
int val10s = 0; / / registrera dig för att hålla 10 count
int val1s = 0; / / Register för 1 räkna
int test_test = 0; / / registrera dig för att lagra nummer för testning/tid också
//
Används för sensormätningar
float sensor = 0; / / lagring för sensorn nivå
int kopia = 0; / / kopia av vad jag lägga i den / tid också
//
int back_lit = 0; / / tillbaka ljus på/av
//
//
//
KNAPPEN GREJER
int btn_read = 0; / / läsa från analog linje
int btn_read2 = 0; / / kopia av läsningen
int btn_pressed = 0; / / knappen trycktes
int btn_number = 1; / / alltid börja med knappen #1
int btn_copy = 0; / / kopia av knapp för con_fig.
int looping = 0; / / för min slingor
//*****************
Store hög- och spänna av ett knappar analoga värde
//
int btn_1hi; / / knappen #1 stort omfång
int btn_1lo; / / knappen #1 låg utbud
int btn_2hi; / / knappen #2 hög räckvidd
int btn_2lo; / / knappen #2 låg utbud
int btn_3hi; / / knapp #3 kick spänner
int btn_3lo; / / knapp #3 låg utbud
int btn_4hi; / / knapp #4 hög räckvidd
int btn_4lo; / / knapp #4 låg utbud
int btn_5hi; / / knapp #5 hög räckvidd
int btn_5lo; / / knapp #5 låg utbud
int btn_6hi; / / knapp #6 hög range
int btn_6lo; / / knapp #6 låg utbud
//
//
int offset_sensor_1 = 257; / / Start offset vid 2.57 volt = LM334Z
int offset_sensor_2 = 273; / / Start offset på 2,73 volt
int offset_sensor_3 = 273; / / Start offset på 2,73 volt
int offset_A = 0; / / 0 = inga justeringar.
1 = sensor 1 Justera.
2 = givare 2 justera.
3 = sensor 3 justera.
LM335 2,73 volt output på noll grader C
LM334Z ungefär 2.57 volt output på noll grader C
//
//
MATRISER ***
Matriser räkningen startar på 0 inte 1 och går upp
//
16-24 tecken 2 linje lcd
int aray_set_up [] = {
56, 12, 6, 1}; LCD setup tecken
//
Startplatser för LCD
int aray_lines [] = {
132 = 5: e tecknet från vänster startposition, linje 1
196 = 5: e tecknet från vänster startposition, linje 2
128 = linje 1
192 = linje 2
128, 192, 132, 196};
//
Använder en tom på första plats så att inte Visa
föregående nollor.
int aray_hunds [] = {
' ', '1', '2', '3', '4', '5', '6', '7', '8', '9', };
//
"0" i den första loaction så att
någon precceding noll
int aray_tens [] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', };
//
Den första matrisen så jag kan sätta namn på lcd början
Matris visas bara i början upp.
lcd_Z = vilken matris att använda
int aray0 [] = {
'F', 'u', 'n', ' ', 'S', 'h', 'w', 'a', 'y', ' ', 'D', 'i', 's', 'p', 'l', 'a', 'y', ' ', ' ', ' ', ' ', ' ', ' ', ' ' };
//
Endast 4 av dessa tecken skickas men vänster vid 5 så ingen kör över
int aray1 [] = {
' ', 'I', 'n', ' ', ' ' };
Endast 4 av dessa tecken skickas men vänster vid 5 så ingen kör över
int aray2 [] = {
'O', 'u', 't', ' ', ' ' };
Lämna nedan för tomma celler
int aray3 [] = {
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' };
Inte används ännu
int aray4 [] = {
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' };
Ordet tiden
int aray5 [] = {
'T', 'i', 'm', 'e', ' ' };
Inte används ännu
int aray6 [] = {
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' , ' ', ' ', ' ', ' ', ' ', ' ' };
//
MATRISER FÖR VECKANS DAGAR
//
int aray7 [] = {
'M', 'o', 'n', ' ', ' ', ' ' };
//
int aray8 [] = {
'T', 'u', 'e', ' ', ' ', ' ' };
//
int aray9 [] = {
'W', 'e', 'd', ' ', ' ', ' ' };
//
int aray10 [] = {
'T', 'h', 'u', ' ', ' ', ' ' };
//
int aray11 [] = {
'F', 'r', 'i', ' ', ' ', ' ' };
//
int aray12 [] = {
'S', 'a', 't', ' ', ' ', ' ' };
//
int aray13 [] = {
'S', 'u', 'n', ' ', ' ', ' ' };
//
MATRISER FÖR KNAPPEN CONFIG
//
int aray14 [] = {
'B', 'u', 't', 't', 'o', 'n', ' ', 'C', 'o', 'n', 'f', 'i', 'g', '.', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' };
//
int aray15 [] = {
'P', 'r', 'e', 's', 's', ' ', ' ', ' ', ' ', ' ' };
//
int aray16 [] = {
'R', 'e', 'l', 'e', 'a', 's', 'e', ' ', ' ', ' ' };
//
int aray17 [] = {
' ', 'F', 'a', 'i', 'l', 'e', 'd', ' ', ' ', ' ' };
//
int aray18 [] = {
' ', 'S', 'e', 't', ' ' };
//
//
//
void setup() {
pinMode (lcd_datapin, produktionen); Definiera som utdata
pinMode (lcd_clk, produktionen); Definiera som utdata
pinMode (lcd_E, produktionen); Definiera (E-linjen) som utdata
pinMode (lcd_RS, produktionen); Definiera (RS linje) som utdata
pinMode (ljus, OUTPUT); Definiera (motljus) som utdata
//
digitalWrite (lcd_E, hög); / / Bring lcd manöverledningen hög
digitalWrite (lcd_RS, hög); / / Bring lcd manöverledningen hög
//
digitalWrite (ljus, låg); / / slå på baksidan ljus för visning
//
LCD-setup
lcd_init(); / / initiera lcd för användning
//
lcd_set = 0; / / första linje
lcd_line();
Delay(5);
Lagt till så linje en visar starta skärmen ***
Det visar bara denna enda gång från början upp ***
//
lcd_Z = 0; / / LCD linje en teckensträng
lcd_N = 24; / / skicka alla 24 tecken
lcd_char();
//
Delay(10000); / / fördröjning 10 sekunder så jag kan se programnamnet.
//
Tydlig LCD linje innan du skriver det så det finns inga kvar över
lcd_set = 0; / / LCD linje en
//
lcd_line_clear(); / / Clear LCD-linjen till tomma
//
//
Konfigurera knapparna på det analoga nätet
Detta blir gjort en gång tidigare huvudloop
//
btn_config(); / / knappen konfiguration rutin.
//
digitalWrite (ljus, hög); / / slå på baksidan ljus för visning
event_seconds1 = 0; / / klart händelsen sekunder register.
back_lit = 0; / / rensa registret bakgrundsbelysning.
//
/////////////////
SLUTET AV INRÄTTATS / /
/////////////////
//
}
//
////////////////////////
BEGIN MAIN LOOP / /
////////////////////////
//
//
void loop() {
//
Måste göras i början att klockan fungerar rätt.
time_begin = millis(); / / plats i början
//
lcd_timeDisp(); / / Visa dag och tidpunkt på linje 1
//
lcd_tempDisp(); / / Visa temp in/ut på linje 2
//
//**************************
TID SAKER ATT UPPDATERA REGISTER
//
time_val = (time_remain + time_duration);
Om tiden genom (intervall) har varit mindre än en sekund
fortsätta att lägga till det.
om (time_val < 1000) {
time_remain = time_val;
}
Om tiden genom (intervall) har varit mer än en sekund
räkna ut hur många sekunder.
om (time_val > = 1000) {
medan (time_val > = 1000) {
time_val = time_val - 1000;
time_seconds ++;
event_seconds1 ++; / / öka event_seconds1 av en
}
time_remain = time_val;
}
//
om (time_seconds > = 60) {
time_minutes ++; / / öka minuter av en
time_remain = (time_remain + 1); / / lagt tid fästingen förlust över tiden.
time_seconds = (time_seconds - 60);
}
om (time_minutes > = 60) {
time_hours ++; / / ökning av 1
time_minutes = (time_minutes - 60);
}
om (time_hours > = 24) {
time_days ++; / / ökning av 1
time_hours = (time_hours - 24);
}
om (time_days > = 7) {
time_days = (time_days - 7);
}
//
//
Kontrollera om en knapp trycks.
Ingen Debounce var skadas i skapandet av detta program.
//
btn_read = analogRead(A0);
om (btn_read > 50 & & back_lit == 0) {
digitalWrite (ljus, låg); / / slå på baksidan ljus för någon
knappen aktivering. Dont göra någon knappåtgärder ännu.
event_seconds1 = 0; / / rensa sekunder event generator.
back_lit = 1; / / nästa knappen pressen är giltigt att göra något.
Delay(2000); / / innan letar du efter en annan knapp intryckt.
//
}
//
//
btn_read = analogRead(A0); / /
om (btn_read > 50 & & back_lit == 1) {
//
Giltigt läsning är något bra än 50.
En giltig behandlingen och tillbaka ljus = 1 om du vill göra knappen saker.
50 är min intervall (inaktivera) för dålig knappar.
En knapp trycks.
button_pressed (); //Figure ut som en
}
Kontrollera om en knapp är släppt.
btn_read = analogRead(A0); / /
om (btn_read == 0 & & back_lit == 1) {
Knappen släpptes.
button_released(); / / räkna ut som en
}
//
Timer för att stänga av bakgrundsbelysningen
om (event_seconds1 > = 120) {
digitalWrite (ljus, hög); / / stänga av bakgrundsbelysningen.
back_lit = 0; / / rensa registret för LCD-bakgrundsbelysning.
offset_A = 0; / / rensa registret för motbokning temps.
}
//
//
Delay(100); / / för stabilitet
//
//************************************
DETTA GÅR I SLUTET AV MAIN LOOP
Fel korrigeras när millis rullar
Helt enkelt ställer båda avläsningar till 0 och startar över.
om (millis() < time_begin) {
time_duration = 0; / / plats i slutet
time_begin = 0; / / plats på slutet
}
//
om (millis() > time_begin) {
time_duration = (millis() - time_begin) ;// plats i slutet
}
//
/////////////////////////
SLUTET AV MAIN LOOP / /
/////////////////////////
//
}
//
//
//
//
//
//*********************
BEGIN RUTINER **
//*********************
//
//
/////////////////////
LCD-RUTINER / /
/////////////////////
//
//
Rutinen att initiera lcd.
//
void lcd_init() {
digitalWrite (lcd_E, låg); / / rensa E line
digitalWrite (lcd_RS, låg); / / rensa RS linje
delayMicroseconds(125); / / längre dröjsmål sedan behövs men fungerar
för (int lcd_i = 0; lcd_i < 4; lcd_i ++) {
//
lcd_C = (aray_set_up[lcd_set]);
//
shiftOut (lcd_datapin, lcd_clk, MSBFIRST, lcd_C);
E_line();
lcd_set = lcd_set + 1.
}
Delay(5);
}
//
//**********
Rutin för att välja vilken linje info är att visas på.
lcd_set = 0 för fodra en.
lcd_set = 1 för rad två.
lcd_set måste anges innan det blir här.
//
void lcd_line() {
lcd_C = (aray_lines[lcd_set]); aray_lines [lcd_set] om lcd_set = 0 = fodra en
aray_lines [lcd_set] om lcd_set = 1 = linje två.
digitalWrite (lcd_E, låg); Lägre E line
digitalWrite (lcd_RS, låg); Lägre RS linje
delayMicroseconds(125); Liten fördröjning
//
shiftOut (lcd_datapin, lcd_clk, MSBFIRST, lcd_C);
E_line();
digitalWrite (lcd_RS, hög);
delayMicroseconds(125);
}
//
//**********
Rutinen att skicka strängar till displayen.
lcd_N måste laddas med antalet tecken att skicka
innan jag här.
//
void lcd_char() {
lcd_D = 0;
//
Justera lcd_N för antalet tecken att skicka
för (lcd_i = 0; lcd_i < lcd_N; lcd_i ++) {
//
växel (lcd_Z) {
fall 0: / / 1 char string Fun_Shway_Display
lcd_A = (aray0[lcd_D]);
bryta;
fall 1: / / 2: a röding string _In_
lcd_A = (aray1[lcd_D]);
bryta;
fall 2: / / 3rd char string Out_
lcd_A = (aray2[lcd_D]);
bryta;
fall 3: / / 4 char sträng används för tomma celler
lcd_A = (aray3[lcd_D]);
bryta;
fall 4: / / 5 char sträng används inte ännu. tomma celler.
lcd_A = (aray4[lcd_D]);
bryta;
fall 5: / / 6 röding string Time_
lcd_A = (aray5[lcd_D]);
bryta;
efter några behandlingen på vilken linje som helst analogt används knäckt
att göra behandlingen så att den kan visas på LCD-
Cracker(); / / konvertera läsning
//
lcd_A = val100s;
thous_out();
//
lcd_A = val10s;
tens_out();
//
lcd_A = val1s;
tens_out();
//
lcd_A = ""; / / ger ett utrymme
car_out(); / / skickar enskilda tecken i stället för en sträng
//
lcd_Z = 2; / / utanför teckensträng
lcd_N = 4; / / Skicka endast 4 tecken
lcd_char();
Delay(5);
//
Hämta värdet på utanför tempsensor på analog linje 3
sensor = analogRead(A3);
sensor = (((sensor * (5.0/1023.0)) * 100)-offset_sensor_3) * 1,8) + 32);
//
test_test = sensor; / / inte intresserad av siffror efter decimal.
//
efter några behandlingen på vilken linje som helst analogt används knäckt
för att göra läsningen så den kan visas på LCD-skärmen.
Cracker(); / / konvertera läsning
//
lcd_A = val100s;
thous_out();
//
lcd_A = val10s;
tens_out();
//
lcd_A = val1s;
tens_out();
//
lcd_A = "";
car_out();
//
lcd_A = "";
car_out();
//
lcd_A = "";
car_out();
//
lcd_A = "";
car_out();
//
lcd_A = "";
car_out();
//
Hämta värdet på ombord tempsensor på analog linje 1
sensor = analogRead(A1); / / få värdet av analog linje 1
sensor = (((sensor * (5.0/1023.0)) * 100)-offset_sensor_1) * 1,8) + 32);
//
test_test = sensor; / / inte intresserad av siffror efter decimal.
//
efter några behandlingen på vilken analog linje används knäckt
att göra behandlingen så att den kan visas på LCD-
Cracker(); / / konvertera behandlingen.
//
lcd_A = val100s;
thous_out();
//
lcd_A = val10s;
tens_out();
//
lcd_A = val1s;
tens_out();
//
//
}
//
////////////////
CRACKER / /
////////////////
//
//**********
Rutinen bryts nummer i något som kan visas
på LCD-skärmen.
test_test måste ha en kopia av vad att knäcka innan det blir här.
//
void cracker() {
//
Test 1000s
val1000s = 0; / / klart 1000 register
medan (test_test > = 1000) {
test_test = test_test - 1000;
val1000s ++;
}
Test 100s
val100s = 0; / / Clear 100 register
medan (test_test > = 100) {
test_test = test_test - 100.
val100s ++;
}
Test 10s
val10s = 0; / / rensa 10 register
medan (test_test > = 10) {
test_test = test_test - 10.
val10s ++;
}
Resten är 1
val1s = test_test;
//
Slutet testning
De tal som lagras med test_test är nu brytas
ut i fyra register
val1000s = antalet tusentals i den test nummer
val100s = antalet hundratals i den test nummer
val10s = antalet TEN i den test nummer
val1s = resten, antalet ettor i numret
//
}
//
//
///////////////////////////////
KNAPPAR PÅ ANALOG LINJE / /
///////////////////////////////
//
//**********
Rutin för att knappen 1 grejer.
//
void btn_1() {
time_days = (time_days + 1);
Delay(100);
}
//
//**********
Rutin för att knappen 2 saker.
//
void btn_2() {
time_hours = (time_hours + 1);
Delay(100);
}
//
//**********
Rutin för att knappen 3 grejer.
//
void btn_3() {
time_minutes = (time_minutes + 1);
Delay(100);
}
//
//**********
Rutin för att knappen 4 saker.
//
void btn_4() {
växel (offset_A) {
fall 0: / / Offset var 0
offset_A = 1; / / göra det sensor 1
bryta;
fall 1: / / Offset var 1
offset_A = 2; / / göra det sensor 2
bryta;
fall 2: / / Offset var 2
offset_A = 3; / / göra det sensor 3
bryta;
fall 3: / / Offset var 3
offset_A = 0; / / göra det 0 = ingen justering av sensorn.
bryta;
}
}
//
//**********
Rutin för att knappen 5 grejer.
Öka sensor förskjutningar.
void btn_5() {
//
om (offset_A == 1) {
offset_sensor_1 ++; / / öka förskjutningen för sensor 1
}
//
om (offset_A == 2) {
offset_sensor_2 ++; / / öka förskjutningen för sensor 2
}
//
om (offset_A == 3) {
offset_sensor_3 ++; / / öka förskjutningen för sensor 3
}
//
}
//
//**********
Rutin för att knappen 6 grejer.
Minska sensor förskjutningar.
void btn_6() {
//
om (offset_A == 1) {
offset_sensor_1--; / / minskning förskjutningen för sensor 1
}
//
om (offset_A == 2) {
offset_sensor_2--; / / minskning förskjutningen för sensor 2
}
//
om (offset_A == 3) {
offset_sensor_3--; / / minskning förskjutningen för sensor 3
}
//
}
//
//
////////////////////////
Knappen intryckt / /
////////////////////////
//
//**********
Rutin för när en knapp trycks.
Knappen är inte räknas till befriaren.
//
void button_pressed() {
//
btn_read2 = (btn_read) ;// Make en kopia av läsning för testning
//
Om knappen värdena är mellan vissa nivåer som
är lika med dess knapp.
Knappen värden förvärvat från btn_config
//
om (btn_read > = btn_1lo & & btn_read2 < = btn_1hi) {
btn_pressed = 1; / / 1 i register = knappen 1 trycktes
}
//
om (btn_read > = btn_2lo & & btn_read2 < = btn_2hi) {
btn_pressed = 2; / / 2 i register = knappen 2 trycktes
}
//
om (btn_read > = btn_3lo & & btn_read2 < = btn_3hi) {
btn_pressed = 3; / / 3 i register = knappen 3 trycktes
}
//
om (btn_read > = btn_4lo & & btn_read2 < = btn_4hi) {
btn_pressed = 4; / / 4 i register = knapp 4 trycktes.
}
//
om (btn_read > = btn_5lo & & btn_read2 < = btn_5hi) {
btn_pressed = 5; / / 5 i register = knapp 5 trycktes.
}
//
om (btn_read > = btn_6lo & & btn_read2 < = btn_6hi) {
btn_pressed = 6; / / 6 i register = knappen 6 trycktes.
}
//
}
//
//
/////////////////////////
Knappen släpps / /
/////////////////////////
//
//**********
Rutin för när en knapp är släppt.
Detta är när händelsen knappen utförs
//
void button_released() {
Räknas detta som en knapptryckning när rensat.
om (btn_read == 0 & & btn_pressed == 1) {
btn_pressed = 0; / / rensa registret
btn_1(); / / göra knappen 1 grejer.
}
//
Räknas detta som en knapptryckning när rensat.
om (btn_read == 0 & & btn_pressed == 2) {
btn_pressed = 0; / / rensa registret
btn_2(); / / göra knappen 2 saker.
}
//
Räknas detta som en knapptryckning när rensat.
om (btn_read == 0 & & btn_pressed == 3) {
btn_pressed = 0; / / rensa registret
btn_3(); / / göra knappen 3 grejer.
}
//
Räknas detta som en knapptryckning när rensat.
om (btn_read == 0 & & btn_pressed == 4) {
btn_pressed = 0; / / rensa registret
btn_4(); / / göra knappen 4 saker.
}
//
Räknas detta som en knapptryckning när rensat.
om (btn_read == 0 & & btn_pressed == 5) {
btn_pressed = 0; / / rensa registret
btn_5(); / / göra knappen 5 grejer.
}
//
Räknas detta som en knapptryckning när rensat.
om (btn_read == 0 & & btn_pressed == 6) {
btn_pressed = 0; / / rensa registret
btn_6(); / / göra knappen 6 grejer.
}
//
}
//
//
/////////////////////////////////
KNAPPEN KONFIGURERA RUTIN / /
/////////////////////////////////
//
//**********
Rutinen att få värdena och gör ett utbud för knapparna.
Rutinen körs en gång innan den viktigaste loopen.
Knappar på analog linje 0
Knapparna kan användas i valfri ordning.
//
void btn_config() {
Konfigurera knapparna på raden analoga A0
//
lcd_set = 1; / / LCD linje två
lcd_line_clear; / / tydlig linje av LCD-
//
lcd_set = 0; / / LCD linje en
lcd_line_clear(); / / tydlig linje av LCD-
lcd_set = 0; / / redan gjort utan att behöva upprepa
lcd_line(); / / Skriv till LCD-linje
Delay(5);
Visa knappen Config på fodra en
lcd_Z = 14. / / config-knappen
lcd_N = 24; / / skicka alla 24 tecken
lcd_char();
Delay(10000); / / ge tid att läsa
//
//
6 knappar = 6 slingor runt.
//
för (looping = 0; looping < 6; looping ++) {
btn_btn(); / / testa knappar
btn_number ++; / / öka på knappen för att testa genom att 1.
}
//
btn_number == 1; / / ändra till 1 när du är klar.
//
}
//
////////////////
btn_btn / /
////////////////
//
//**********
Rutin för att berätta vilken knapp att trycka på
//
void btn_btn() {
Testa knappar
lcd_set = 0; / / LCD linje en
lcd_line();
Delay(5);
//
lcd_Z = 15. / /
lcd_N = 6; / / skicka 6 tecken = Press_
lcd_char();
lcd_Z = 14. / /
lcd_N = 7; / / skicka 7 tecken = Button_
lcd_char();
//
lcd_A = btn_number; / / startar på knapp 1
tens_out(); / / skicka siffran
//
Delay(5000); / / ge tid att läsa
//
btn_read = analogRead(A0); / / knappar på analoga 0
//
lcd_set = 0; / / LCD linje en
lcd_line();
Delay(5);
//
lcd_Z = 16. / / config-knappen
lcd_N = 8; / / skicka 8 tecken = Release_
lcd_char();
lcd_Z = 14. / / config-knappen
lcd_N = 7; / / skicka 7 tecken = Button_
lcd_char();
lcd_A = btn_number; / / startar på knapp 1
tens_out(); / / skicka siffran
//
Delay(5000); / / ge tid att läsa.
//
lcd_set = 0; / / Line en
lcd_line_clear(); / / Clear LCD-linjen
//
Testa resultat
Knappen var god gå här
om (btn_read > 0) {
btn_copy = btn_number; / / göra en kopia. Det var bra
btn_con_fig();
Göra saker om det var en bra läsning
//
lcd_line(); / / redan set för linje 1
Delay(5);
//
lcd_Z = 14. / / config-knappen
lcd_N = 7; / / skicka 7 tecken = Button_
lcd_char();
lcd_A = btn_number; / / startar på knapp 1
tens_out(); / / skicka siffran
lcd_Z = 18; / / String för "Set"
lcd_N = 4; / / skicka 4 tecken = _Ange
lcd_char(); / / skicka det
//
//
}
//
//
Testa resultat
Knappen kunde inte gå här
om (btn_read < = 50) {
btn_copy = (btn_number + 6); / / knappen arbetar på + 6
att hoppa över de bra avläsningarna och göra dåliga
btn_con_fig();
Göra saker om det var en dålig behandling
//
lcd_line(); / / redan set för linje 1
Delay(5);
//
lcd_Z = 14. / / String för Button_
lcd_N = 7; / / skicka 7 tecken = Button_
lcd_char();
lcd_A = btn_number; / / startar på knapp 1
tens_out(); / / skicka siffran
lcd_Z = 17; / /
lcd_N = 7; / / skicka 7 tecken = _Failed
lcd_char();
//
}
btn_read = 0; / / rensa den sista analoga behandlingen
Delay(5000); / /
//
lcd_set = 0; / / Line en
lcd_line_clear(); / / Clear LCD-linjen
//
}
//
////////////////////
btn_con_fig / /
////////////////////
//
//**********
Rutin som sätter knappen spänner att titta på.
//
void btn_con_fig() {
//
Nummer 1-6 är för bra läsning
Nummer 7-12 är för dålig Läs
//
växel (btn_copy) {
fall 0: / / inga nummer ska vara noll. fel
bryta; / / Kick härifrån
//
fall 1: / / knappen nummer 1 var bra
btn_1hi = (btn_read + 2); / / gör om korrekt anpassning
btn_1lo = (btn_read - 2); / / gör om korrekt anpassning
bryta;
//
fall 2: / / knappen nummer 2 var bra
btn_2hi = (btn_read + 2); / / gör om korrekt anpassning
btn_2lo = (btn_read - 2); / / gör om korrekt anpassning
bryta;
//
fall 3: / / knappen nummer 3 var bra
btn_3hi = (btn_read + 2); / / gör om korrekt anpassning
btn_3lo = (btn_read - 2); / / gör om korrekt anpassning
bryta;
//
fall 4: / / knappen nummer 4 var bra
btn_4hi = (btn_read + 2); / / gör om korrekt anpassning
btn_4lo = (btn_read - 2); / / gör om korrekt anpassning
bryta;
//
fall 5: / / knappen nummer 5 var bra
btn_5hi = (btn_read + 2); / / gör om korrekt anpassning
btn_5lo = (btn_read - 2); / / gör om korrekt anpassning
bryta;
//
mål 6: / / knappen nummer 6 var bra
btn_6hi = (btn_read + 2); / / gör om korrekt anpassning
btn_6lo = (btn_read - 2); / / gör om korrekt anpassning
bryta;
//
////////////////////
Dålig knappar / /
////////////////////
//
fall 7: / / knappen nummer 1 var dålig
btn_1hi = 100; / / belastning falskt tal så att knapparna inte
btn_1lo = 100; / / lag felaktigt
bryta;
//
mål 8: / / knappen nummer 2 var dålig
btn_2hi = 100; / / belastning falskt tal så att knapparna inte
btn_2lo = 100; / / lag felaktigt
bryta;
//
mål 9: / / knappen nummer 3 var dålig
btn_3hi = 100; / / belastning falskt tal så att knapparna inte
btn_3lo = 100; / / lag felaktigt
bryta;
//
mål 10: / / knappen nummer 4 var dålig
btn_4hi = 100; / / belastning falskt tal så att knapparna inte
btn_4lo = 100; / / lag felaktigt
bryta;
//
mål 11: / / knappen nummer 5 var dålig
btn_5hi = 100; / / belastning falskt tal så att knapparna inte
btn_5lo = 100; / / lag felaktigt
bryta;
//
ärende 12: / / knappen nummer 6 var dålig
btn_6hi = 100; / / belastning falskt tal så att knapparna inte
btn_6lo = 100; / / lag felaktigt
bryta;
//
}
}
//
//
//
//

Se Steg
Relaterade Ämnen

Programmerbar klocka med fyra teckens display

du kommer att bli tal om staden när du bär denna motbjudande, överdimensionerade, fullständigt opraktiskt armbandsur. Visa din favorit ovårdat språk, Sångtexter, primtal, etc.Inspirerad av Microreader kit, beslöt jag att göra en gigantisk klocka med...

Handgjorda accessoarer-godis kulöra DIY smycken display

lära sig hur man bygger enkla och anpassade handgjorda accessoarer och en färgad DIY smycken uppvisning av en målning färgpalett med dessa enkla instruktioner. Det är den perfekta assistenten att organisera dina smycken bitar!Har du brainstorming sät...

Arduino VFD Display klocka handledning - en Guide till VFD displayer

... + Lite om VFDsMinns du (fortfarande) visning av din gamla CD-spelare, HiFi system eller bil radio? Har du någonsin märkt displayerna används på din lokala mataffär som visar du skannade objektet och priset för det?Dessa skärmar har en karakterist...

7 segment LED-display med PIC controller och Flowcode V5

Först av allt, om du har några frågor, tveka inte att kommentera! Jag skulle vara mer än glad att svara på din fråga så bra som möjligt!Material som används:-PIC 18F452 mikrokontroller (några PIC mikrokontroller med tillräckligt stift kommer att göra...

Container doppning (för en liten planet eller bara på kul)

container doppning (Undvik farliga dykning) är en rolig aktivitet där en trevlig cykeltur, en jakt, spänningen i discovery, mysteriet med de senaste arkeologi, rättsmedicinska berättande, bra Karma återvinning och en form av shopping med gröna miljöp...

5 x 4 LED display matrix med hjälp av en Basic Stamp 2 (bs2) och Charlieplexing

har en Basic Stamp 2 och några extra lysdioder sitta? Varför inte leka med begreppet charlieplexing och skapa en utgång med bara 5 stift.För detta instructable jag kommer att använda BS2e men någon medlem av familjen BS2 bör fungera.Steg 1: Charliepl...

Från bärgades till awesome sprit display... med ljus

Ohoj där!I detta projekt kommer jag visa hur jag har återställt en store whiskey display till en två-hylla bar. Denna stackars killen hade övergetts i ganska många veckor av den container på den plats där jag jobbar. Jag hade tänkt design var intress...

PVC Man - Book Tablet Holder Display

PVC Man - bok Tablet innehavaren DisplayIdag införa jag den PVC Man. Han är lätt att bygga och kul för att leka med. Jag älskar att placera honom i olika positioner för att se allt han kan göra. Han är bra på att koppla av på verandan, håller en tabl...

Arduino TFT display och teckensnitt bibliotek

Jag är en fan av Arduino eftersom det finns så mycket programvara som redan finns tillgänglig på internet, detta gör att fylla nya projekt enklare!Nyligen köpte jag ett par billiga 1.8" TFT skärmar för ett projekt, från början kunde jag inte få dem a...

Wall lampetter med dolda Weather Display och påtagliga användargränssnitt

videor av projektet i aktion nedan!Disclaimer: Detta är en förkortad beskrivning av projektet eftersom jag inte hade tid att göra en fullständig steg för steg instructable i tid för en tävling. Men jag kommer gärna att göra en steg för steg "kompatib...

Göra en naturlig storlek Batmobile Tumbler och Batman tema Halloween display

här är de steg för steg-instruktionerna om hur man bygger en fullskalig prop i tumlaren från Batman Begins/Dark Knight filmer. Jag har också inkluderat viss information för att göra en hela Batman tema displayen med saker som en liv stora animatronic...

Bärbar Raspberry Pi geigermätare med Display

Mäktiga Ohm geigermätare är en fristående gör det själv kit. När MightyOhm upptäcker en partikel Piper det. Detta är ett integrationsprojekt. Flera delprojekt är behöver för att slutföra detta projekt. Slutresultatet är en mäktig Ohm geigermätare kop...

Göra en James Bond Spy bil (med vapen) och en spion skolan Halloween Display

här är de instruktioner som behövs för att omvandla en Mazda 6 (min Aston Martin är i butiken) in i en James Bond spy bil. Jag har även lite instruktion på interaktiva temat (Spy skola) som vi hade i år.Varje år, göra min son och jag en grund-up bygg...

Kul Hackable högtalare Timer

detta är en rolig högtalare timer jag gjorde för några kommande konferenser. Det använder en 4-siffrig charlieplexed LED (pseudo 7-segment) display och drivs av en AVR ATMega328 eller en Arduino. Det ger en standardtid att ställas in, kan pausas och...

Skrämmande kul Halloween utsmyckning idéer för din trädgård

31 oktober är precis runt hörnet så jag ville dela med dig alla utsmyckning jobb jag har gjort i San Francisco Bay-området i 15 år. Frun i huset är galen för Halloween och visar i sin gårdsplanen har långsamt expanderat under denna tid. Spöken, zombi...

Voice ingång Arduino Bi-color LED Matrix prydande Text Display (Bluetooth + Android)

Medan du surfar på intressanta projekt på Instructables, snubblade vi över imponerande röst aktiverat Arduino (Bluetooth + Android) instructable. Du kan kolla upp det påVi har nyligen satt upp en instructable att bygga en 7 Bi-color 8 x 8 LED Matrix...

Smycken Display

Göra egna smycken med återvunnet objekt!Jag råkar hitta som den store bough sådana så är över prissatta. Väl du kan göra din egen display och anpassa det som du vill använda för under $5. Använda material som du förmodligen redan hemma. Ha kul och va...

Science Fair Display ombord

detta är min OSFDBPC (en Science Fair displayen styrelsen Per barn) projekt. Detta är Go Green eftersom det bidrar till att rädda planeten en bit kartong i taget. Dessutom sparar du green (American vernacular för pengar) när du har till köpa en när d...

Arduino OLED 128 X 64 IIC seriell Display: skriva ut text och rörliga bilder

Har du köpt dig en OLED-display för Arduino men vet inte hur du kommer igång? Inte så enkelt att använda som du trodde? Prova på detta!Du får lära dig att tråd upp din OLED uppvisning och kommunicera det över följetong (I2C). Vi kommer för att täcka...