Testet BERTL17 zuerst die LED's dann nach Tasterdruck jeweils die dazugehörigen LED

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }