bo_kont_n.c
#include <stdio.h>
#include <wiringPi.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
int btn_pin = 22;//Physical 31
int p_count = 1;
int flag = 0;
char i_c = '0';
char stringCom[12] = "mpc play 1";
char stringComStop[10] = "mpc stop";
int stringDat[9];
int i = 0;
int res = 0;
int decode (int res)
{
flag = 1;
switch (res)
{
case 86 : {//PHONO
p_count = 1;
}
break;
case 84 : {//TAPE fr_sl
p_count = 1;
}
break;
case 3 : {//NUM
delay (130);
flag = 0;
}
break;
case 54 : {//AUX
p_count = 1;
}
break;
case 50 : {//STOP
system (stringComStop);
flag = 0;
}
break;
case 74 : {//T STOP
system (stringComStop);
flag = 0;
}
break;
case 52 : {//OFF
system (stringComStop);
flag = 0;
}
break;
case 106 : p_count ++;//RIGHT ARROW
break;
case 102 : p_count ++;//T RIGHT ARROW
break;
case 12 : p_count --;//LEFT ARROW
break;
case 76 : p_count --;//T LEFT ARROW
break;
case 124: {//1
p_count = 1;
delay (60);
}
break;
case 122: {//2
p_count = 2;
delay (60);
}
break;
case 120: {//3
p_count = 3;
delay (60);
}
break;
case 118: {//4
p_count = 4;
delay (60);
}
break;
case 116: {//5
p_count = 5;
delay (60);
}
break;
case 114: {//6
p_count = 6;
delay (60);
}
break;
case 112: {//7
p_count = 7;
delay (60);
}
break;
case 110: {//8
p_count = 8;
delay (60);
}
break;
case 108: {//9
p_count = 9;
delay (60);
}
break;
default: {
flag = 0;
return 0;
}
}
if (flag == 1)
{
if (p_count > 9)
{
p_count = 1;
}
if (p_count < 1)
{
p_count = 9;
}
i_c = p_count + 48;//int to char max 9
stringCom[9] = i_c;
system (stringCom);
}
return 0;
}
int main (void)
{
if (wiringPiSetup () == -1)
return 1 ;
pinMode (btn_pin, INPUT);
while (1)
{
while (digitalRead (btn_pin) == 1)
{
delay(0.5);
pinMode (btn_pin, INPUT);
if (digitalRead (btn_pin) == 0)
{
delay (1.5);
for (i = 1; i < 8; i++)
{
delay(3.4);
stringDat[i] = (digitalRead (btn_pin));
}
res = 0;
for (i = 1; i < 8; i++)
{
switch (i)
{
case 1 : res = stringDat[i] * 64;
break;
case 2 : res = res + (stringDat[i] * 32);
break;
case 3 : res = res + (stringDat[i] * 16);
break;
case 4 : res = res + (stringDat[i] * 8);
break;
case 5 : res = res + (stringDat[i] * 4);
break;
case 6 : res = res + (stringDat[i] * 2);
break;
case 7 : res = res + (stringDat[i] * 1);
break;
}
}
decode
(res);
delay
(10);
}
}
}
return 0 ;
}
Compile med: g++ -o bo_kont_n bo_kont_n.c -lwiringPi ,
installer wiringpi med: sudo apt-get install wiringpi
Bemærk:
dette er ekspermentel software der er ingen garanti for brugbarhed, det
kan derimod sandsynligvis være skadeligt, kun til brug i Danmark.
Bug: hurtige gentagne tryk kan låse program, numerisk funktion kan
svigte.