Projekte_werkstatt
/
Mbed-Mensch-3-Menu
Fork of Mbed-Mensch-1 by
Diff: main.cpp
- Revision:
- 0:e97a6a69fe4b
- Child:
- 1:0eaa7682f7e1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jan 21 13:10:55 2016 +0000 @@ -0,0 +1,102 @@ +#include "mbed.h" + +I2C i2c(P0_5,P0_4); +Serial port(P0_19,P0_18); +BusOut myled(P1_8,P1_9,P1_10,P1_11,P1_0,P1_1,P1_3,P1_4,P1_6,P1_7,P1_12,P1_13); +AnalogIn ldr(P0_12); +AnalogIn poti(P0_11); +BusOut rgb(P0_9,P1_15,P0_21); +BusIn btn(P1_16,P0_23,P0_10,P0_15); +DigitalOut test (P0_13); +InterruptIn Button1(P1_16); +InterruptIn Button2(P0_23); + +uint32_t ledbuffer[100]; +uint32_t colourbuf[100]; +char Index = 0; +char length = 60; +void writeled(uint32_t leddata); // Prototyp +void writeledbit(char wert); +void next(); +void last(); +void output(); +int main() +{ + Button1.rise(&next); + Button2.rise(&last); + rgb = 7; + colourbuf[0]=0x0000FF;//Grün + colourbuf[1]=0x00FF00;//Rot + colourbuf[2]=0xFF0000;//Blau + colourbuf[3]=0x00FFFF;//Gelb + colourbuf[4]=0x000000;//Aus + output(); + while(1) ; + while(1) + { + writeled(0); + test=0; + wait(1); + } +} + +void output() +{ + for(char i = 0;i<Index;i++) + writeled(0); + writeled(colourbuf[3]); + for(char i = Index;i<length-1;i++) + writeled(0); +} + +void next() +{ + if(Index<(length-1)) + Index++; + output(); +} + +void last() +{ + if(Index>=0) + Index--; + output(); +} +void writeled(uint32_t leddata) +{ int i; + for(i=0;i<24;i++) + { + + writeledbit(((leddata>>i)&0x000001)==0x000001); + } +} +void writeledbit(char wert) // Funktion schreibe bit +{ + int j; + if(wert) + { + test=1; // data 1 + for(j=0;j<5;j++) + { + __nop(); + } + test=0; + for(j=0;j<1;j++) + { + __nop(); + } + } + else + { + test=1; // data 0 + for(j=0;j<1;j++) + { + __nop(); + } + test=0; + for(j=0;j<5;j++) + { + __nop(); + } + } +} \ No newline at end of file