Testet BERTL17 zuerst die LED's dann nach Tasterdruck jeweils die dazugehörigen LED
Dependencies: mbed
main.cpp@3:bff0f9cba269, 2015-05-31 (annotated)
- Committer:
- Enenkel
- Date:
- Sun May 31 16:31:30 2015 +0000
- Revision:
- 3:bff0f9cba269
- Parent:
- 2:040855fee6fa
- Child:
- 4:a33d2e24765a
B15 Lauflicht und Taster Test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Enenkel | 0:a8a0195ed7dc | 1 | /*********************************** |
Enenkel | 1:628da1b465a4 | 2 | name: BERTL15_Test1 |
Enenkel | 1:628da1b465a4 | 3 | author: Enenkel |
Enenkel | 3:bff0f9cba269 | 4 | description: TEST1 |
Enenkel | 1:628da1b465a4 | 5 | D1_D4 Lauflicht |
Enenkel | 3:bff0f9cba269 | 6 | |
Enenkel | 0:a8a0195ed7dc | 7 | ***********************************/ |
Enenkel | 0:a8a0195ed7dc | 8 | #include "mbed.h" |
Enenkel | 1:628da1b465a4 | 9 | |
Enenkel | 2:040855fee6fa | 10 | // 3,3 und 3,7V Schiene |
Enenkel | 3:bff0f9cba269 | 11 | DigitalOut LedD10 (P1_8); // LED D10 bis D13 IO Definieren |
Enenkel | 1:628da1b465a4 | 12 | DigitalOut LedD11 (P1_9); |
Enenkel | 1:628da1b465a4 | 13 | DigitalOut LedD12 (P1_10); |
Enenkel | 1:628da1b465a4 | 14 | DigitalOut LedD13 (P1_11); |
Enenkel | 2:040855fee6fa | 15 | |
Enenkel | 3:bff0f9cba269 | 16 | I2C i2c(p28, p27); // die Adressen des I2C Busses am uP |
Enenkel | 3:bff0f9cba269 | 17 | // p28 -> SDA |
Enenkel | 3:bff0f9cba269 | 18 | // p27 -> SCL |
Enenkel | 1:628da1b465a4 | 19 | |
Enenkel | 2:040855fee6fa | 20 | // 5V Schiene & Motor Spannung |
Enenkel | 3:bff0f9cba269 | 21 | DigitalOut Von (P1_2); // SPANNUNG 10V & 5V |
Enenkel | 1:628da1b465a4 | 22 | double counter1; |
Enenkel | 1:628da1b465a4 | 23 | int a; |
Enenkel | 1:628da1b465a4 | 24 | |
Enenkel | 0:a8a0195ed7dc | 25 | int main() { |
Enenkel | 3:bff0f9cba269 | 26 | Von=0; // muss 0 sein, sonst leuchtet RGB !!! |
Enenkel | 1:628da1b465a4 | 27 | a=1; |
Enenkel | 0:a8a0195ed7dc | 28 | char btn = 0; |
Enenkel | 0:a8a0195ed7dc | 29 | // **** Config PCA9555 I0 as output ******* |
Enenkel | 0:a8a0195ed7dc | 30 | i2c.start(); |
Enenkel | 0:a8a0195ed7dc | 31 | i2c.write(0x40); // Adresse des PCA9555 = 40 |
Enenkel | 0:a8a0195ed7dc | 32 | // das letzte Bit = 0 -> schreiben 0040 0000 |
Enenkel | 0:a8a0195ed7dc | 33 | i2c.write(0x06); // Befehl für das IO Port 0 -> siehe SCHEMA des PCA9555 |
Enenkel | 0:a8a0195ed7dc | 34 | i2c.write(0x00); // Schalte alle Pins des Ports als OUTPUT |
Enenkel | 0:a8a0195ed7dc | 35 | i2c.stop(); |
Enenkel | 2:040855fee6fa | 36 | |
Enenkel | 2:040855fee6fa | 37 | // D10-D13 Lauflicht |
Enenkel | 2:040855fee6fa | 38 | a=0; |
Enenkel | 3:bff0f9cba269 | 39 | while (a<4) // 4 Mal durch die Schleife laufen |
Enenkel | 2:040855fee6fa | 40 | { |
Enenkel | 3:bff0f9cba269 | 41 | LedD10=1; // LED D10 ON |
Enenkel | 3:bff0f9cba269 | 42 | wait (0.5); // 0.5 sec warten |
Enenkel | 3:bff0f9cba269 | 43 | LedD10=0; // LED D10 AUS |
Enenkel | 3:bff0f9cba269 | 44 | LedD11=1; // LED D11 EIN |
Enenkel | 2:040855fee6fa | 45 | wait (0.5); |
Enenkel | 2:040855fee6fa | 46 | LedD11=0; |
Enenkel | 2:040855fee6fa | 47 | LedD12=1; |
Enenkel | 2:040855fee6fa | 48 | wait (0.5); |
Enenkel | 2:040855fee6fa | 49 | LedD12=0; |
Enenkel | 2:040855fee6fa | 50 | LedD13=1; |
Enenkel | 2:040855fee6fa | 51 | wait (0.5); |
Enenkel | 3:bff0f9cba269 | 52 | LedD13=!LedD13; // ! Invertieren 1 wird 0 und 0 wird 1 |
Enenkel | 3:bff0f9cba269 | 53 | a=a++; // a = a+1 -> in C besser a++ |
Enenkel | 2:040855fee6fa | 54 | } |
Enenkel | 2:040855fee6fa | 55 | |
Enenkel | 2:040855fee6fa | 56 | |
Enenkel | 2:040855fee6fa | 57 | //Taster und LED Test |
Enenkel | 0:a8a0195ed7dc | 58 | while(1) { |
Enenkel | 1:628da1b465a4 | 59 | counter1=1; |
Enenkel | 1:628da1b465a4 | 60 | while(counter1<5000) { |
Enenkel | 1:628da1b465a4 | 61 | // Einlesen der Taster und speichern unter btn |
Enenkel | 1:628da1b465a4 | 62 | i2c.start(); |
Enenkel | 3:bff0f9cba269 | 63 | /* Das letzte Bit der Adresse entscheidet |
Enenkel | 3:bff0f9cba269 | 64 | ob geschrieben oder gelesen wird. |
Enenkel | 3:bff0f9cba269 | 65 | 0 => schreiben; 1 => lesen */ |
Enenkel | 1:628da1b465a4 | 66 | i2c.write(0x40); //Adresse & schreiben 0100 0000 |
Enenkel | 1:628da1b465a4 | 67 | i2c.write(0x01); //aktivate Port 1 |
Enenkel | 0:a8a0195ed7dc | 68 | |
Enenkel | 1:628da1b465a4 | 69 | i2c.start(); |
Enenkel | 3:bff0f9cba269 | 70 | i2c.write(0x41); // Adresse & LESEN 0100 0001 |
Enenkel | 3:bff0f9cba269 | 71 | btn = i2c.read(0); // Einlesen des Ports 1 und speichern unter btn |
Enenkel | 1:628da1b465a4 | 72 | i2c.stop(); |
Enenkel | 0:a8a0195ed7dc | 73 | |
Enenkel | 1:628da1b465a4 | 74 | // Schreiben auf Port 0 und damit auf die LED's |
Enenkel | 1:628da1b465a4 | 75 | i2c.start(); |
Enenkel | 1:628da1b465a4 | 76 | i2c.write(0x40); // Adresse & schreiben |
Enenkel | 1:628da1b465a4 | 77 | i2c.write(0x02); // |
Enenkel | 1:628da1b465a4 | 78 | i2c.write(~btn); // schriebn auf Port 0 den INVERSEN Wert von btn |
Enenkel | 1:628da1b465a4 | 79 | i2c.stop(); |
Enenkel | 3:bff0f9cba269 | 80 | |
Enenkel | 3:bff0f9cba269 | 81 | counter1=counter1++; |
Enenkel | 1:628da1b465a4 | 82 | } |
Enenkel | 2:040855fee6fa | 83 | } |
Enenkel | 2:040855fee6fa | 84 | } |