![](/media/cache/group/ep_LV4vK4D.webp.50x50_q85.jpg)
Testprogramm fuer den SMD IoTKit Shield.
Dependencies: MFRC522 RemoteIR Servo StepperMotorUni mbed-rtos mbed ESP8266 RCSwitch SAA1064 TMP175
main.cpp@3:880adec02196, 2015-03-25 (annotated)
- Committer:
- marcel1691
- Date:
- Wed Mar 25 13:20:47 2015 +0000
- Revision:
- 3:880adec02196
- Parent:
- 2:e263949513ca
- Child:
- 4:0710c12a0067
Selbstlaufend
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
marcel1691 | 0:1b22732d0d8d | 1 | /** Testprogramm fuer den SMD IoTKit Shield. |
marcel1691 | 0:1b22732d0d8d | 2 | */ |
marcel1691 | 0:1b22732d0d8d | 3 | #include "mbed.h" |
marcel1691 | 0:1b22732d0d8d | 4 | #include "rtos.h" |
marcel1691 | 0:1b22732d0d8d | 5 | #include "ReceiverIR.h" |
marcel1691 | 0:1b22732d0d8d | 6 | #include "Servo.h" |
marcel1691 | 0:1b22732d0d8d | 7 | #include "Motor.h" |
marcel1691 | 0:1b22732d0d8d | 8 | #include "StepperMotorUni.h" |
marcel1691 | 0:1b22732d0d8d | 9 | #include "MFRC522.h" |
marcel1691 | 1:be86d02cd130 | 10 | #include <string> |
marcel1691 | 1:be86d02cd130 | 11 | #include "ESP8266.h" |
marcel1691 | 1:be86d02cd130 | 12 | #include "RCSwitch.h" |
marcel1691 | 2:e263949513ca | 13 | #include "TMP175.h" |
marcel1691 | 0:1b22732d0d8d | 14 | // Trace |
marcel1691 | 0:1b22732d0d8d | 15 | #include "trace.h" |
marcel1691 | 0:1b22732d0d8d | 16 | |
marcel1691 | 0:1b22732d0d8d | 17 | /** aktuell laufender Test */ |
marcel1691 | 0:1b22732d0d8d | 18 | int test = 0; |
marcel1691 | 0:1b22732d0d8d | 19 | // Test vor- und rueckwaerts schalten |
marcel1691 | 0:1b22732d0d8d | 20 | InterruptIn button1( SW2 ); |
marcel1691 | 0:1b22732d0d8d | 21 | InterruptIn button2( SW3 ); |
marcel1691 | 2:e263949513ca | 22 | |
marcel1691 | 0:1b22732d0d8d | 23 | void next() |
marcel1691 | 0:1b22732d0d8d | 24 | { |
marcel1691 | 0:1b22732d0d8d | 25 | test++; |
marcel1691 | 2:e263949513ca | 26 | if ( test > 16 ) |
marcel1691 | 2:e263949513ca | 27 | test = 0; |
marcel1691 | 0:1b22732d0d8d | 28 | } |
marcel1691 | 0:1b22732d0d8d | 29 | void previous() |
marcel1691 | 0:1b22732d0d8d | 30 | { |
marcel1691 | 0:1b22732d0d8d | 31 | if ( test > 0 ) |
marcel1691 | 0:1b22732d0d8d | 32 | test--; |
marcel1691 | 1:be86d02cd130 | 33 | if ( test == 0 ) |
marcel1691 | 2:e263949513ca | 34 | test = 16; |
marcel1691 | 0:1b22732d0d8d | 35 | } |
marcel1691 | 0:1b22732d0d8d | 36 | |
marcel1691 | 0:1b22732d0d8d | 37 | /*------------------------------------------------------------------------ |
marcel1691 | 0:1b22732d0d8d | 38 | * Testfunktionen |
marcel1691 | 0:1b22732d0d8d | 39 | ------------------------------------------------------------------------*/ |
marcel1691 | 0:1b22732d0d8d | 40 | |
marcel1691 | 0:1b22732d0d8d | 41 | /** Analoge Sensoren Werte ausgeben */ |
marcel1691 | 0:1b22732d0d8d | 42 | void doPrintAnalogeValues( ) |
marcel1691 | 0:1b22732d0d8d | 43 | { |
marcel1691 | 0:1b22732d0d8d | 44 | INFO( "Analog Thread" ); |
marcel1691 | 0:1b22732d0d8d | 45 | |
marcel1691 | 0:1b22732d0d8d | 46 | // Analoge Sensoren |
marcel1691 | 0:1b22732d0d8d | 47 | AnalogIn poti( A0 ); |
marcel1691 | 0:1b22732d0d8d | 48 | AnalogIn lightSensor( A1 ); |
marcel1691 | 0:1b22732d0d8d | 49 | AnalogIn hallSensor( A2 ); |
marcel1691 | 2:e263949513ca | 50 | AnalogIn audioSensor( A3 ); |
marcel1691 | 0:1b22732d0d8d | 51 | |
marcel1691 | 2:e263949513ca | 52 | printf( "Poti %f, Light %f, Hall %f Audio %f\n", poti.read(), lightSensor.read(), hallSensor.read(), audioSensor.read() ); |
marcel1691 | 0:1b22732d0d8d | 53 | } |
marcel1691 | 0:1b22732d0d8d | 54 | |
marcel1691 | 0:1b22732d0d8d | 55 | /** LED's fortschalten */ |
marcel1691 | 0:1b22732d0d8d | 56 | int led = 1; |
marcel1691 | 0:1b22732d0d8d | 57 | |
marcel1691 | 0:1b22732d0d8d | 58 | void doLedTicker() |
marcel1691 | 0:1b22732d0d8d | 59 | { |
marcel1691 | 2:e263949513ca | 60 | TRACE1( "LED Thread %d", led ); |
marcel1691 | 2:e263949513ca | 61 | |
marcel1691 | 0:1b22732d0d8d | 62 | // LED's (Aktoren) |
marcel1691 | 0:1b22732d0d8d | 63 | DigitalOut led1(D10); |
marcel1691 | 0:1b22732d0d8d | 64 | DigitalOut led2(D11); |
marcel1691 | 0:1b22732d0d8d | 65 | DigitalOut led3(D12); |
marcel1691 | 2:e263949513ca | 66 | DigitalOut led4(D13); |
marcel1691 | 0:1b22732d0d8d | 67 | |
marcel1691 | 0:1b22732d0d8d | 68 | switch ( led ) |
marcel1691 | 0:1b22732d0d8d | 69 | { |
marcel1691 | 0:1b22732d0d8d | 70 | case 1: |
marcel1691 | 0:1b22732d0d8d | 71 | led1 = 1; |
marcel1691 | 0:1b22732d0d8d | 72 | break; |
marcel1691 | 0:1b22732d0d8d | 73 | case 2: |
marcel1691 | 0:1b22732d0d8d | 74 | led2 = 1; |
marcel1691 | 0:1b22732d0d8d | 75 | break; |
marcel1691 | 0:1b22732d0d8d | 76 | case 3: |
marcel1691 | 0:1b22732d0d8d | 77 | led3 = 1; |
marcel1691 | 0:1b22732d0d8d | 78 | break; |
marcel1691 | 2:e263949513ca | 79 | case 4: |
marcel1691 | 2:e263949513ca | 80 | led4 = 1; |
marcel1691 | 2:e263949513ca | 81 | break; |
marcel1691 | 0:1b22732d0d8d | 82 | default: |
marcel1691 | 2:e263949513ca | 83 | led1 = led2 = led3 = led4 = 0; |
marcel1691 | 0:1b22732d0d8d | 84 | led = 0; |
marcel1691 | 0:1b22732d0d8d | 85 | break; |
marcel1691 | 0:1b22732d0d8d | 86 | } |
marcel1691 | 0:1b22732d0d8d | 87 | led++; |
marcel1691 | 0:1b22732d0d8d | 88 | } |
marcel1691 | 0:1b22732d0d8d | 89 | |
marcel1691 | 0:1b22732d0d8d | 90 | /** Servo Thread */ |
marcel1691 | 0:1b22732d0d8d | 91 | void doServoThread() |
marcel1691 | 0:1b22732d0d8d | 92 | { |
marcel1691 | 2:e263949513ca | 93 | INFO( "Servo Thread" ); |
marcel1691 | 2:e263949513ca | 94 | |
marcel1691 | 2:e263949513ca | 95 | Servo bottom( D9 ); |
marcel1691 | 2:e263949513ca | 96 | Servo arm( D10 ); |
marcel1691 | 2:e263949513ca | 97 | |
marcel1691 | 2:e263949513ca | 98 | printf( "Servo 0 - 180\n" ); |
marcel1691 | 2:e263949513ca | 99 | for ( float p = 0.1f; p < 1.0f; p += 0.001f ) |
marcel1691 | 2:e263949513ca | 100 | { |
marcel1691 | 2:e263949513ca | 101 | bottom = p; |
marcel1691 | 2:e263949513ca | 102 | arm = p / 2; |
marcel1691 | 2:e263949513ca | 103 | Thread::wait( 1 ); // ACHTUNG: Millisekunden!!! |
marcel1691 | 2:e263949513ca | 104 | } |
marcel1691 | 2:e263949513ca | 105 | |
marcel1691 | 2:e263949513ca | 106 | printf( "Servo 180 - 0\n" ); |
marcel1691 | 2:e263949513ca | 107 | for ( float p = 1.0f; p >= 0.1f; p -= 0.001f ) |
marcel1691 | 2:e263949513ca | 108 | { |
marcel1691 | 2:e263949513ca | 109 | bottom = p; |
marcel1691 | 2:e263949513ca | 110 | arm = p / 2; |
marcel1691 | 2:e263949513ca | 111 | Thread::wait( 1 ); |
marcel1691 | 2:e263949513ca | 112 | } |
marcel1691 | 0:1b22732d0d8d | 113 | } |
marcel1691 | 0:1b22732d0d8d | 114 | /** Motor 1 Test */ |
marcel1691 | 0:1b22732d0d8d | 115 | void doMotorThread() |
marcel1691 | 0:1b22732d0d8d | 116 | { |
marcel1691 | 0:1b22732d0d8d | 117 | INFO( "Motor Thread" ); |
marcel1691 | 0:1b22732d0d8d | 118 | |
marcel1691 | 0:1b22732d0d8d | 119 | Motor m1(D3, D2, D4); // pwm, fwd, rev |
marcel1691 | 0:1b22732d0d8d | 120 | Motor m2(D6, D5, D7); // pwm, fwd, rev |
marcel1691 | 0:1b22732d0d8d | 121 | |
marcel1691 | 0:1b22732d0d8d | 122 | printf( "Motor rueckwaerts\n" ); |
marcel1691 | 0:1b22732d0d8d | 123 | for (double s= 0.5; s < 1.0 ; s += 0.01) |
marcel1691 | 0:1b22732d0d8d | 124 | { |
marcel1691 | 0:1b22732d0d8d | 125 | m1.speed(s * -1); |
marcel1691 | 0:1b22732d0d8d | 126 | m2.speed(s ); |
marcel1691 | 0:1b22732d0d8d | 127 | Thread::wait ( 40 ); |
marcel1691 | 0:1b22732d0d8d | 128 | } |
marcel1691 | 0:1b22732d0d8d | 129 | Thread::wait( 100 ); |
marcel1691 | 0:1b22732d0d8d | 130 | m1.speed( 0 ); |
marcel1691 | 0:1b22732d0d8d | 131 | m2.speed( 0 ); |
marcel1691 | 0:1b22732d0d8d | 132 | |
marcel1691 | 0:1b22732d0d8d | 133 | printf( "Motor vorwaerts\n" ); |
marcel1691 | 0:1b22732d0d8d | 134 | for (double s= 0.5; s < 1.0 ; s += 0.01) |
marcel1691 | 0:1b22732d0d8d | 135 | { |
marcel1691 | 0:1b22732d0d8d | 136 | m1.speed(s); |
marcel1691 | 0:1b22732d0d8d | 137 | m2.speed(s * -1); |
marcel1691 | 0:1b22732d0d8d | 138 | Thread::wait( 40 ); |
marcel1691 | 0:1b22732d0d8d | 139 | } |
marcel1691 | 0:1b22732d0d8d | 140 | Thread::wait( 100 ); |
marcel1691 | 0:1b22732d0d8d | 141 | m1.speed( 0 ); |
marcel1691 | 0:1b22732d0d8d | 142 | m2.speed( 0 ); |
marcel1691 | 0:1b22732d0d8d | 143 | |
marcel1691 | 0:1b22732d0d8d | 144 | } |
marcel1691 | 0:1b22732d0d8d | 145 | |
marcel1691 | 0:1b22732d0d8d | 146 | /** Schrittmotor Thread */ |
marcel1691 | 0:1b22732d0d8d | 147 | void doStepperThread() |
marcel1691 | 0:1b22732d0d8d | 148 | { |
marcel1691 | 0:1b22732d0d8d | 149 | INFO( "Stepper Thread" ); |
marcel1691 | 0:1b22732d0d8d | 150 | |
marcel1691 | 2:e263949513ca | 151 | StepperMotorUni motor1( D2, D3, D4, D5 ); |
marcel1691 | 2:e263949513ca | 152 | StepperMotorUni motor2( PTC5, PTC7, PTC0, PTC9 ); |
marcel1691 | 2:e263949513ca | 153 | StepperMotorUni motor3( PTC8, PTC1, PTB19, PTB18 ); |
marcel1691 | 0:1b22732d0d8d | 154 | |
marcel1691 | 0:1b22732d0d8d | 155 | // Motordrehzahl |
marcel1691 | 2:e263949513ca | 156 | motor1.set_pps( 100 ); |
marcel1691 | 2:e263949513ca | 157 | motor2.set_pps( 200 ); |
marcel1691 | 2:e263949513ca | 158 | motor3.set_pps( 300 ); |
marcel1691 | 0:1b22732d0d8d | 159 | |
marcel1691 | 0:1b22732d0d8d | 160 | printf( "Schrittmotor vorwaerts\n" ); |
marcel1691 | 2:e263949513ca | 161 | motor1.move_steps( 512 ); |
marcel1691 | 2:e263949513ca | 162 | motor2.move_steps( 512 ); |
marcel1691 | 2:e263949513ca | 163 | motor3.move_steps( 512 ); |
marcel1691 | 0:1b22732d0d8d | 164 | Thread::wait( 3000 ); |
marcel1691 | 0:1b22732d0d8d | 165 | |
marcel1691 | 0:1b22732d0d8d | 166 | printf( "Schrittmotor rueckwaerts\n" ); |
marcel1691 | 2:e263949513ca | 167 | motor1.move_steps( -512 ); |
marcel1691 | 2:e263949513ca | 168 | motor2.move_steps( -512 ); |
marcel1691 | 2:e263949513ca | 169 | motor3.move_steps( -512 ); |
marcel1691 | 0:1b22732d0d8d | 170 | Thread::wait( 3000 ); |
marcel1691 | 0:1b22732d0d8d | 171 | } |
marcel1691 | 0:1b22732d0d8d | 172 | |
marcel1691 | 0:1b22732d0d8d | 173 | /** MOSFET on/off */ |
marcel1691 | 0:1b22732d0d8d | 174 | void doMosfet() |
marcel1691 | 0:1b22732d0d8d | 175 | { |
marcel1691 | 0:1b22732d0d8d | 176 | INFO( "MOSFET Thread" ); |
marcel1691 | 0:1b22732d0d8d | 177 | |
marcel1691 | 3:880adec02196 | 178 | DigitalOut mosfet( D7 ); |
marcel1691 | 0:1b22732d0d8d | 179 | |
marcel1691 | 0:1b22732d0d8d | 180 | mosfet = 1; |
marcel1691 | 0:1b22732d0d8d | 181 | Thread::wait( 1000 ); |
marcel1691 | 0:1b22732d0d8d | 182 | mosfet = 0; |
marcel1691 | 0:1b22732d0d8d | 183 | } |
marcel1691 | 0:1b22732d0d8d | 184 | |
marcel1691 | 1:be86d02cd130 | 185 | /** ESP8266 Modem an Serieller Schnittstelle */ |
marcel1691 | 1:be86d02cd130 | 186 | void doESP8266() |
marcel1691 | 1:be86d02cd130 | 187 | { |
marcel1691 | 1:be86d02cd130 | 188 | INFO("ESP8266 Test"); |
marcel1691 | 3:880adec02196 | 189 | ESP8266 esp( A3, A2, 9600 ); // tx, rx (Bluetooth Header) |
marcel1691 | 1:be86d02cd130 | 190 | char snd[255], rcv[1000]; // Strings for sending and receiving commands / data / replies |
marcel1691 | 1:be86d02cd130 | 191 | wait(1); |
marcel1691 | 1:be86d02cd130 | 192 | |
marcel1691 | 1:be86d02cd130 | 193 | printf("Reset ESP\n"); |
marcel1691 | 1:be86d02cd130 | 194 | esp.Reset(); |
marcel1691 | 1:be86d02cd130 | 195 | esp.RcvReply(rcv, 400); |
marcel1691 | 1:be86d02cd130 | 196 | printf("%s", rcv); |
marcel1691 | 1:be86d02cd130 | 197 | wait(2); |
marcel1691 | 1:be86d02cd130 | 198 | |
marcel1691 | 1:be86d02cd130 | 199 | printf("Sending AT\n"); |
marcel1691 | 1:be86d02cd130 | 200 | strcpy(snd, "AT"); |
marcel1691 | 1:be86d02cd130 | 201 | esp.SendCMD(snd); |
marcel1691 | 1:be86d02cd130 | 202 | esp.RcvReply(rcv, 400); |
marcel1691 | 1:be86d02cd130 | 203 | printf("%s", rcv); |
marcel1691 | 1:be86d02cd130 | 204 | wait(2); |
marcel1691 | 1:be86d02cd130 | 205 | printf("Set mode to Client\n"); |
marcel1691 | 1:be86d02cd130 | 206 | esp.SetMode(1); |
marcel1691 | 1:be86d02cd130 | 207 | esp.RcvReply(rcv, 1000); |
marcel1691 | 1:be86d02cd130 | 208 | printf("%s", rcv); |
marcel1691 | 1:be86d02cd130 | 209 | |
marcel1691 | 1:be86d02cd130 | 210 | printf("Receiving Wifi List\n"); |
marcel1691 | 1:be86d02cd130 | 211 | esp.GetList(rcv); |
marcel1691 | 1:be86d02cd130 | 212 | printf("%s", rcv); |
marcel1691 | 1:be86d02cd130 | 213 | |
marcel1691 | 3:880adec02196 | 214 | /*printf("Connecting to AP\n"); |
marcel1691 | 3:880adec02196 | 215 | esp.Join("MyAP", "MyPasswd" ); // Replace MyAP and MyPasswd with your SSID and password |
marcel1691 | 1:be86d02cd130 | 216 | esp.RcvReply(rcv, 1000); |
marcel1691 | 1:be86d02cd130 | 217 | printf("%s", rcv); |
marcel1691 | 1:be86d02cd130 | 218 | wait(8); |
marcel1691 | 1:be86d02cd130 | 219 | printf("Getting IP\n"); |
marcel1691 | 1:be86d02cd130 | 220 | esp.GetIP(rcv); |
marcel1691 | 1:be86d02cd130 | 221 | printf("%s", rcv); |
marcel1691 | 1:be86d02cd130 | 222 | printf("Setting multiple connections\r\n"); |
marcel1691 | 1:be86d02cd130 | 223 | esp.SetMultiple(); |
marcel1691 | 1:be86d02cd130 | 224 | esp.RcvReply(rcv, 1000); |
marcel1691 | 3:880adec02196 | 225 | printf("%s", rcv);*/ |
marcel1691 | 1:be86d02cd130 | 226 | |
marcel1691 | 1:be86d02cd130 | 227 | printf("THE END\n"); |
marcel1691 | 1:be86d02cd130 | 228 | } |
marcel1691 | 1:be86d02cd130 | 229 | |
marcel1691 | 1:be86d02cd130 | 230 | /** RFID Reader MFRC522 Test */ |
marcel1691 | 1:be86d02cd130 | 231 | void doRFIDReader() |
marcel1691 | 1:be86d02cd130 | 232 | { |
marcel1691 | 1:be86d02cd130 | 233 | INFO("RFID Reader MFRC522 Test"); |
marcel1691 | 1:be86d02cd130 | 234 | // NFC/RFID Reader an WiFi Header von K64F |
marcel1691 | 3:880adec02196 | 235 | MFRC522 rfidReader( D11, D12, D13, D10, D8 ); |
marcel1691 | 1:be86d02cd130 | 236 | rfidReader.PCD_Init(); |
marcel1691 | 1:be86d02cd130 | 237 | |
marcel1691 | 1:be86d02cd130 | 238 | // RFID Reader |
marcel1691 | 1:be86d02cd130 | 239 | if ( rfidReader.PICC_IsNewCardPresent()) |
marcel1691 | 1:be86d02cd130 | 240 | if ( rfidReader.PICC_ReadCardSerial()) |
marcel1691 | 1:be86d02cd130 | 241 | { |
marcel1691 | 1:be86d02cd130 | 242 | // Print Card UID |
marcel1691 | 1:be86d02cd130 | 243 | printf("Card UID: "); |
marcel1691 | 1:be86d02cd130 | 244 | for (uint8_t i = 0; i < rfidReader.uid.size; i++) |
marcel1691 | 1:be86d02cd130 | 245 | printf("%02X:", rfidReader.uid.uidByte[i]); |
marcel1691 | 1:be86d02cd130 | 246 | printf("\n"); |
marcel1691 | 1:be86d02cd130 | 247 | // Print Card type |
marcel1691 | 1:be86d02cd130 | 248 | uint8_t piccType = rfidReader.PICC_GetType(rfidReader.uid.sak); |
marcel1691 | 1:be86d02cd130 | 249 | printf("PICC Type: %s \n", rfidReader.PICC_GetTypeName(piccType)); |
marcel1691 | 1:be86d02cd130 | 250 | } |
marcel1691 | 1:be86d02cd130 | 251 | } |
marcel1691 | 1:be86d02cd130 | 252 | |
marcel1691 | 1:be86d02cd130 | 253 | /** 3 x 3 Werte */ |
marcel1691 | 1:be86d02cd130 | 254 | unsigned int strip[9]; |
marcel1691 | 1:be86d02cd130 | 255 | |
marcel1691 | 1:be86d02cd130 | 256 | void writeLED( SPI &spi ) |
marcel1691 | 1:be86d02cd130 | 257 | { |
marcel1691 | 1:be86d02cd130 | 258 | for ( int p = 0; p < 9; p++ ) |
marcel1691 | 1:be86d02cd130 | 259 | spi.write( strip[p] ); |
marcel1691 | 1:be86d02cd130 | 260 | } |
marcel1691 | 1:be86d02cd130 | 261 | |
marcel1691 | 1:be86d02cd130 | 262 | void clearLED( SPI &spi ) |
marcel1691 | 1:be86d02cd130 | 263 | { |
marcel1691 | 1:be86d02cd130 | 264 | for ( int p = 0; p < 9; p++ ) |
marcel1691 | 1:be86d02cd130 | 265 | { |
marcel1691 | 1:be86d02cd130 | 266 | strip[p] = 0; |
marcel1691 | 1:be86d02cd130 | 267 | spi.write( strip[p] ); |
marcel1691 | 1:be86d02cd130 | 268 | } |
marcel1691 | 1:be86d02cd130 | 269 | } |
marcel1691 | 1:be86d02cd130 | 270 | |
marcel1691 | 1:be86d02cd130 | 271 | /** LED Strip am SPI Bus */ |
marcel1691 | 1:be86d02cd130 | 272 | void doSPILedStrip() |
marcel1691 | 1:be86d02cd130 | 273 | { |
marcel1691 | 1:be86d02cd130 | 274 | INFO( "LED Strip Test" ); |
marcel1691 | 1:be86d02cd130 | 275 | |
marcel1691 | 1:be86d02cd130 | 276 | SPI spi(D11, NC, D13); // mosi, miso, sclk |
marcel1691 | 1:be86d02cd130 | 277 | spi.format( 8,0 ); |
marcel1691 | 1:be86d02cd130 | 278 | spi.frequency( 800000 ); |
marcel1691 | 1:be86d02cd130 | 279 | |
marcel1691 | 1:be86d02cd130 | 280 | // Gruen, Rot, Blau - von Dunkel bis Hell |
marcel1691 | 1:be86d02cd130 | 281 | for ( int i = 0; i < 128; i+=32 ) |
marcel1691 | 1:be86d02cd130 | 282 | { |
marcel1691 | 1:be86d02cd130 | 283 | // LED 1 |
marcel1691 | 1:be86d02cd130 | 284 | strip[0] = i; |
marcel1691 | 1:be86d02cd130 | 285 | strip[1] = 0; |
marcel1691 | 1:be86d02cd130 | 286 | strip[2] = 0; |
marcel1691 | 1:be86d02cd130 | 287 | // LED 2 |
marcel1691 | 1:be86d02cd130 | 288 | strip[3] = 0; |
marcel1691 | 1:be86d02cd130 | 289 | strip[4] = i; |
marcel1691 | 1:be86d02cd130 | 290 | strip[5] = 0; |
marcel1691 | 1:be86d02cd130 | 291 | // LED 3 |
marcel1691 | 1:be86d02cd130 | 292 | strip[6] = 0; |
marcel1691 | 1:be86d02cd130 | 293 | strip[7] = 0; |
marcel1691 | 1:be86d02cd130 | 294 | strip[8] = i; |
marcel1691 | 1:be86d02cd130 | 295 | writeLED( spi ); |
marcel1691 | 1:be86d02cd130 | 296 | wait( 0.1 ); |
marcel1691 | 1:be86d02cd130 | 297 | } |
marcel1691 | 1:be86d02cd130 | 298 | wait( 1.0 ); |
marcel1691 | 1:be86d02cd130 | 299 | clearLED( spi ); |
marcel1691 | 1:be86d02cd130 | 300 | } |
marcel1691 | 1:be86d02cd130 | 301 | |
marcel1691 | 1:be86d02cd130 | 302 | void LEDStripOff( PwmOut& red, PwmOut& green, PwmOut& blue ) |
marcel1691 | 1:be86d02cd130 | 303 | { |
marcel1691 | 1:be86d02cd130 | 304 | printf( "off \n" ); |
marcel1691 | 1:be86d02cd130 | 305 | red = 0; |
marcel1691 | 1:be86d02cd130 | 306 | green = 0; |
marcel1691 | 1:be86d02cd130 | 307 | blue = 0; |
marcel1691 | 1:be86d02cd130 | 308 | wait ( 0.2 ); |
marcel1691 | 1:be86d02cd130 | 309 | } |
marcel1691 | 1:be86d02cd130 | 310 | |
marcel1691 | 1:be86d02cd130 | 311 | void LEDStripDim( PwmOut& pin ) |
marcel1691 | 1:be86d02cd130 | 312 | { |
marcel1691 | 1:be86d02cd130 | 313 | printf( "dim\n" ); |
marcel1691 | 1:be86d02cd130 | 314 | for ( float i = 0.0f; i < 1.0f; i += .01f ) |
marcel1691 | 1:be86d02cd130 | 315 | { |
marcel1691 | 1:be86d02cd130 | 316 | pin = i; |
marcel1691 | 1:be86d02cd130 | 317 | wait( 0.02 ); |
marcel1691 | 1:be86d02cd130 | 318 | } |
marcel1691 | 1:be86d02cd130 | 319 | } |
marcel1691 | 1:be86d02cd130 | 320 | |
marcel1691 | 1:be86d02cd130 | 321 | /** LED Strip 12Volt Test */ |
marcel1691 | 1:be86d02cd130 | 322 | void doLEDStrip() |
marcel1691 | 1:be86d02cd130 | 323 | { |
marcel1691 | 1:be86d02cd130 | 324 | INFO( "LED Strip V12 Test" ); |
marcel1691 | 2:e263949513ca | 325 | PwmOut green( D5 ); |
marcel1691 | 2:e263949513ca | 326 | PwmOut red( D6 ); |
marcel1691 | 2:e263949513ca | 327 | PwmOut blue( D7 ); |
marcel1691 | 1:be86d02cd130 | 328 | |
marcel1691 | 1:be86d02cd130 | 329 | LEDStripDim( red ); |
marcel1691 | 1:be86d02cd130 | 330 | LEDStripOff( red, green, blue ); |
marcel1691 | 1:be86d02cd130 | 331 | LEDStripDim( green ); |
marcel1691 | 1:be86d02cd130 | 332 | LEDStripOff( red, green, blue ); |
marcel1691 | 1:be86d02cd130 | 333 | LEDStripDim( blue ); |
marcel1691 | 1:be86d02cd130 | 334 | LEDStripOff( red, green, blue ); |
marcel1691 | 1:be86d02cd130 | 335 | |
marcel1691 | 1:be86d02cd130 | 336 | red = 1; |
marcel1691 | 1:be86d02cd130 | 337 | wait( 0.2 ); |
marcel1691 | 1:be86d02cd130 | 338 | LEDStripOff( red, green, blue ); |
marcel1691 | 1:be86d02cd130 | 339 | |
marcel1691 | 1:be86d02cd130 | 340 | green = 1; |
marcel1691 | 1:be86d02cd130 | 341 | wait( 0.2 ); |
marcel1691 | 1:be86d02cd130 | 342 | LEDStripOff( red, green, blue ); |
marcel1691 | 1:be86d02cd130 | 343 | |
marcel1691 | 1:be86d02cd130 | 344 | blue = 1; |
marcel1691 | 1:be86d02cd130 | 345 | wait( 0.2 ); |
marcel1691 | 1:be86d02cd130 | 346 | LEDStripOff( red, green, blue ); |
marcel1691 | 1:be86d02cd130 | 347 | |
marcel1691 | 1:be86d02cd130 | 348 | red = 1; |
marcel1691 | 1:be86d02cd130 | 349 | blue = 1; |
marcel1691 | 1:be86d02cd130 | 350 | green = 1; |
marcel1691 | 1:be86d02cd130 | 351 | wait( 0.2 ); |
marcel1691 | 1:be86d02cd130 | 352 | LEDStripOff( red, green, blue ); |
marcel1691 | 1:be86d02cd130 | 353 | } |
marcel1691 | 1:be86d02cd130 | 354 | |
marcel1691 | 1:be86d02cd130 | 355 | /** Funksteckdose ein/aus */ |
marcel1691 | 1:be86d02cd130 | 356 | void doRC() |
marcel1691 | 1:be86d02cd130 | 357 | { |
marcel1691 | 1:be86d02cd130 | 358 | INFO( "RCSwitch Test" ); |
marcel1691 | 1:be86d02cd130 | 359 | RCSwitch mySwitch = RCSwitch( D9, D8 ); // Sender / Empfaenger (optional) |
marcel1691 | 1:be86d02cd130 | 360 | |
marcel1691 | 1:be86d02cd130 | 361 | printf( "Sende nach: Adresse 1 - 5 alle On, Geraet B aus A-D " ); |
marcel1691 | 1:be86d02cd130 | 362 | // Adresse 1 - 5 alle On, Geraet B aus A-D |
marcel1691 | 1:be86d02cd130 | 363 | mySwitch.switchOff("11111", "01000"); |
marcel1691 | 1:be86d02cd130 | 364 | wait( 0.5 ); |
marcel1691 | 1:be86d02cd130 | 365 | |
marcel1691 | 1:be86d02cd130 | 366 | printf( "- ON\n" ); |
marcel1691 | 1:be86d02cd130 | 367 | mySwitch.switchOn ("11111", "01000"); |
marcel1691 | 1:be86d02cd130 | 368 | } |
marcel1691 | 1:be86d02cd130 | 369 | |
marcel1691 | 1:be86d02cd130 | 370 | /*------------------------------------------------------------------------ |
marcel1691 | 1:be86d02cd130 | 371 | * Infrarot Funktionen |
marcel1691 | 1:be86d02cd130 | 372 | ------------------------------------------------------------------------*/ |
marcel1691 | 1:be86d02cd130 | 373 | |
marcel1691 | 1:be86d02cd130 | 374 | /** Receive. |
marcel1691 | 1:be86d02cd130 | 375 | * @param format Pointer to a format. |
marcel1691 | 1:be86d02cd130 | 376 | * @param buf Pointer to a buffer. |
marcel1691 | 1:be86d02cd130 | 377 | * @param bufsiz Size of the buffer. |
marcel1691 | 1:be86d02cd130 | 378 | * @return Bit length of the received data. |
marcel1691 | 1:be86d02cd130 | 379 | */ |
marcel1691 | 1:be86d02cd130 | 380 | int receiveIR(ReceiverIR &ir_rx, RemoteIR::Format *format, uint8_t *buf, int bufsiz, int timeout = 100) |
marcel1691 | 1:be86d02cd130 | 381 | { |
marcel1691 | 1:be86d02cd130 | 382 | int cnt = 0; |
marcel1691 | 1:be86d02cd130 | 383 | while (ir_rx.getState() != ReceiverIR::Received) |
marcel1691 | 1:be86d02cd130 | 384 | { |
marcel1691 | 1:be86d02cd130 | 385 | cnt++; |
marcel1691 | 1:be86d02cd130 | 386 | if (timeout < cnt) |
marcel1691 | 1:be86d02cd130 | 387 | return -1; |
marcel1691 | 1:be86d02cd130 | 388 | } |
marcel1691 | 1:be86d02cd130 | 389 | return ir_rx.getData(format, buf, bufsiz * 8); |
marcel1691 | 1:be86d02cd130 | 390 | } |
marcel1691 | 1:be86d02cd130 | 391 | |
marcel1691 | 1:be86d02cd130 | 392 | /** |
marcel1691 | 1:be86d02cd130 | 393 | * Display a format of a data. |
marcel1691 | 1:be86d02cd130 | 394 | */ |
marcel1691 | 1:be86d02cd130 | 395 | void displayIRFormat(RemoteIR::Format format) |
marcel1691 | 1:be86d02cd130 | 396 | { |
marcel1691 | 1:be86d02cd130 | 397 | switch (format) |
marcel1691 | 1:be86d02cd130 | 398 | { |
marcel1691 | 1:be86d02cd130 | 399 | case RemoteIR::UNKNOWN: |
marcel1691 | 1:be86d02cd130 | 400 | printf("????????\n"); |
marcel1691 | 1:be86d02cd130 | 401 | break; |
marcel1691 | 1:be86d02cd130 | 402 | case RemoteIR::NEC: |
marcel1691 | 1:be86d02cd130 | 403 | printf("NEC \n"); |
marcel1691 | 1:be86d02cd130 | 404 | break; |
marcel1691 | 1:be86d02cd130 | 405 | case RemoteIR::NEC_REPEAT: |
marcel1691 | 1:be86d02cd130 | 406 | printf("NEC (R)\n"); |
marcel1691 | 1:be86d02cd130 | 407 | break; |
marcel1691 | 1:be86d02cd130 | 408 | case RemoteIR::AEHA: |
marcel1691 | 1:be86d02cd130 | 409 | printf("AEHA \n"); |
marcel1691 | 1:be86d02cd130 | 410 | break; |
marcel1691 | 1:be86d02cd130 | 411 | case RemoteIR::AEHA_REPEAT: |
marcel1691 | 1:be86d02cd130 | 412 | printf("AEHA (R)\n"); |
marcel1691 | 1:be86d02cd130 | 413 | break; |
marcel1691 | 1:be86d02cd130 | 414 | case RemoteIR::SONY: |
marcel1691 | 1:be86d02cd130 | 415 | printf("SONY \n"); |
marcel1691 | 1:be86d02cd130 | 416 | break; |
marcel1691 | 1:be86d02cd130 | 417 | } |
marcel1691 | 1:be86d02cd130 | 418 | } |
marcel1691 | 1:be86d02cd130 | 419 | |
marcel1691 | 1:be86d02cd130 | 420 | /** Display a data. |
marcel1691 | 1:be86d02cd130 | 421 | * @param buf Pointer to a buffer. |
marcel1691 | 1:be86d02cd130 | 422 | * @param bitlength Bit length of a data. |
marcel1691 | 1:be86d02cd130 | 423 | */ |
marcel1691 | 1:be86d02cd130 | 424 | void displayIRData(uint8_t *buf, int bitlength) |
marcel1691 | 1:be86d02cd130 | 425 | { |
marcel1691 | 1:be86d02cd130 | 426 | const int n = bitlength / 8 + (((bitlength % 8) != 0) ? 1 : 0); |
marcel1691 | 1:be86d02cd130 | 427 | |
marcel1691 | 1:be86d02cd130 | 428 | for (int i = 0; i < n; i++) |
marcel1691 | 1:be86d02cd130 | 429 | printf("%02X", buf[i]); |
marcel1691 | 1:be86d02cd130 | 430 | for (int i = 0; i < 8 - n; i++) |
marcel1691 | 1:be86d02cd130 | 431 | printf("--"); |
marcel1691 | 1:be86d02cd130 | 432 | } |
marcel1691 | 1:be86d02cd130 | 433 | |
marcel1691 | 1:be86d02cd130 | 434 | /** IR Empfaenger abfragen */ |
marcel1691 | 1:be86d02cd130 | 435 | void onReceiveIR() |
marcel1691 | 1:be86d02cd130 | 436 | { |
marcel1691 | 1:be86d02cd130 | 437 | INFO( "IR Receive Test" ); |
marcel1691 | 1:be86d02cd130 | 438 | ReceiverIR ir_rx( PTB20 ); |
marcel1691 | 1:be86d02cd130 | 439 | |
marcel1691 | 1:be86d02cd130 | 440 | uint8_t buf1[32]; |
marcel1691 | 1:be86d02cd130 | 441 | uint8_t buf2[32]; |
marcel1691 | 1:be86d02cd130 | 442 | int bitlength1; |
marcel1691 | 1:be86d02cd130 | 443 | RemoteIR::Format format; |
marcel1691 | 1:be86d02cd130 | 444 | |
marcel1691 | 1:be86d02cd130 | 445 | memset(buf1, 0x00, sizeof(buf1)); |
marcel1691 | 1:be86d02cd130 | 446 | memset(buf2, 0x00, sizeof(buf2)); |
marcel1691 | 1:be86d02cd130 | 447 | |
marcel1691 | 1:be86d02cd130 | 448 | bitlength1 = receiveIR( ir_rx, &format, buf1, sizeof(buf1)); |
marcel1691 | 1:be86d02cd130 | 449 | if (bitlength1 < 0) |
marcel1691 | 1:be86d02cd130 | 450 | return; |
marcel1691 | 1:be86d02cd130 | 451 | |
marcel1691 | 1:be86d02cd130 | 452 | displayIRData(buf1, bitlength1); |
marcel1691 | 1:be86d02cd130 | 453 | displayIRFormat(format); |
marcel1691 | 1:be86d02cd130 | 454 | } |
marcel1691 | 1:be86d02cd130 | 455 | |
marcel1691 | 1:be86d02cd130 | 456 | /** Buttons auf Shield */ |
marcel1691 | 1:be86d02cd130 | 457 | void doButtons() |
marcel1691 | 1:be86d02cd130 | 458 | { |
marcel1691 | 2:e263949513ca | 459 | INFO ( "Buttons Test -> press button" ); |
marcel1691 | 2:e263949513ca | 460 | DigitalIn button3( A0, PullUp ); |
marcel1691 | 2:e263949513ca | 461 | DigitalIn button4( A1, PullUp ); |
marcel1691 | 2:e263949513ca | 462 | DigitalIn button5( A2, PullUp ); |
marcel1691 | 1:be86d02cd130 | 463 | |
marcel1691 | 3:880adec02196 | 464 | //while ( 1 ) |
marcel1691 | 3:880adec02196 | 465 | //{ |
marcel1691 | 1:be86d02cd130 | 466 | if ( button1 == 0 ) |
marcel1691 | 1:be86d02cd130 | 467 | { |
marcel1691 | 1:be86d02cd130 | 468 | printf( "button 1 pressed\n" ); |
marcel1691 | 1:be86d02cd130 | 469 | return; |
marcel1691 | 1:be86d02cd130 | 470 | } |
marcel1691 | 1:be86d02cd130 | 471 | if ( button2 == 0 ) |
marcel1691 | 1:be86d02cd130 | 472 | { |
marcel1691 | 1:be86d02cd130 | 473 | printf( "button 2 pressed\n" ); |
marcel1691 | 1:be86d02cd130 | 474 | return; |
marcel1691 | 1:be86d02cd130 | 475 | } |
marcel1691 | 1:be86d02cd130 | 476 | if ( button3 == 0 ) |
marcel1691 | 1:be86d02cd130 | 477 | { |
marcel1691 | 1:be86d02cd130 | 478 | printf( "button 3 pressed\n" ); |
marcel1691 | 1:be86d02cd130 | 479 | return; |
marcel1691 | 1:be86d02cd130 | 480 | } |
marcel1691 | 1:be86d02cd130 | 481 | if ( button4 == 0 ) |
marcel1691 | 1:be86d02cd130 | 482 | { |
marcel1691 | 1:be86d02cd130 | 483 | printf( "button 4 pressed\n" ); |
marcel1691 | 1:be86d02cd130 | 484 | return; |
marcel1691 | 1:be86d02cd130 | 485 | } |
marcel1691 | 1:be86d02cd130 | 486 | if ( button5 == 0 ) |
marcel1691 | 1:be86d02cd130 | 487 | { |
marcel1691 | 1:be86d02cd130 | 488 | printf( "button 5 pressed\n" ); |
marcel1691 | 1:be86d02cd130 | 489 | return; |
marcel1691 | 1:be86d02cd130 | 490 | } |
marcel1691 | 1:be86d02cd130 | 491 | wait ( 0.2 ); |
marcel1691 | 3:880adec02196 | 492 | //} |
marcel1691 | 1:be86d02cd130 | 493 | } |
marcel1691 | 1:be86d02cd130 | 494 | |
marcel1691 | 2:e263949513ca | 495 | /** I2C Temperatorsensor */ |
marcel1691 | 2:e263949513ca | 496 | void doTempSensor() |
marcel1691 | 2:e263949513ca | 497 | { |
marcel1691 | 2:e263949513ca | 498 | INFO( "Temperator Sensor Test" ); |
marcel1691 | 2:e263949513ca | 499 | TMP175 mySensor( D14, D15 ); |
marcel1691 | 2:e263949513ca | 500 | |
marcel1691 | 2:e263949513ca | 501 | float Temp; |
marcel1691 | 2:e263949513ca | 502 | mySensor.vSetConfigurationTMP175(SHUTDOWN_MODE_OFF|COMPARATOR_MODE|POLARITY_0|FAULT_QUEUE_6|RESOLUTION_12,0x48); // Address -> A0,A1,A2=0 |
marcel1691 | 2:e263949513ca | 503 | mySensor.vSetTemperatureLowTMP175(25.0); |
marcel1691 | 2:e263949513ca | 504 | mySensor.vSetTemperatureHighTMP175(35.0); |
marcel1691 | 2:e263949513ca | 505 | |
marcel1691 | 2:e263949513ca | 506 | for( int k = 0; k < 100; k++ ) |
marcel1691 | 2:e263949513ca | 507 | { |
marcel1691 | 2:e263949513ca | 508 | Temp = mySensor; |
marcel1691 | 2:e263949513ca | 509 | printf( "Temperature: %f C\n",Temp); |
marcel1691 | 2:e263949513ca | 510 | } |
marcel1691 | 2:e263949513ca | 511 | } |
marcel1691 | 2:e263949513ca | 512 | |
marcel1691 | 3:880adec02196 | 513 | /** LED Digit Test */ |
marcel1691 | 3:880adec02196 | 514 | void do4DigitLED() |
marcel1691 | 2:e263949513ca | 515 | { |
marcel1691 | 3:880adec02196 | 516 | INFO( "LED Digit Test" ); |
marcel1691 | 3:880adec02196 | 517 | unsigned char saa1064 = 0x70; // define the I2C bus address for our SAA1064 |
marcel1691 | 3:880adec02196 | 518 | //nums array 0,1,2,3,4,5,6,7,8,9,A,b,c,D,E,F,' ' //last element == blank |
marcel1691 | 3:880adec02196 | 519 | // add 8 for dot |
marcel1691 | 3:880adec02196 | 520 | unsigned char nums[17]={ 0xE7, 0x84, 0xD3, 0xD6, 0xB4, 0x76, 0x77, 0xC4, 0xF7, 0xF6, 0xF5, 0x37, 0x13, 0x97, 0x73, 0x71}; |
marcel1691 | 3:880adec02196 | 521 | unsigned char digit[4]={0,0,0,0}; |
marcel1691 | 3:880adec02196 | 522 | uint8_t data[6]; |
marcel1691 | 3:880adec02196 | 523 | |
marcel1691 | 2:e263949513ca | 524 | I2C i2c( D14, D15); // SDA, SCL |
marcel1691 | 3:880adec02196 | 525 | // Initialisierung |
marcel1691 | 3:880adec02196 | 526 | data[0] = 0x00; |
marcel1691 | 3:880adec02196 | 527 | data[1] = 0x47; |
marcel1691 | 3:880adec02196 | 528 | i2c.write( saa1064, (char*) data, 2 ); |
marcel1691 | 2:e263949513ca | 529 | |
marcel1691 | 3:880adec02196 | 530 | // alles auf OFF setzen |
marcel1691 | 3:880adec02196 | 531 | data[0] = 1; |
marcel1691 | 3:880adec02196 | 532 | data[1] = 0; |
marcel1691 | 3:880adec02196 | 533 | data[2] = 0; |
marcel1691 | 3:880adec02196 | 534 | data[3] = 0; |
marcel1691 | 3:880adec02196 | 535 | data[4] = 0; |
marcel1691 | 3:880adec02196 | 536 | i2c.write(saa1064, (char*) data, 5); |
marcel1691 | 2:e263949513ca | 537 | |
marcel1691 | 3:880adec02196 | 538 | for ( int i = 0; i <= 16-4; i++ ) |
marcel1691 | 3:880adec02196 | 539 | { |
marcel1691 | 3:880adec02196 | 540 | digit[0]=nums[i]; |
marcel1691 | 3:880adec02196 | 541 | digit[1]=nums[i+1]; |
marcel1691 | 3:880adec02196 | 542 | digit[2]=nums[i+2]; |
marcel1691 | 3:880adec02196 | 543 | digit[3]=nums[i+3]; |
marcel1691 | 3:880adec02196 | 544 | data[0] = 1; |
marcel1691 | 3:880adec02196 | 545 | data[1] = ((digit[3]<<4) & 0xF0) | (digit[1] & 0x0F); |
marcel1691 | 3:880adec02196 | 546 | data[2] = ((digit[2]<<4) & 0xF0) | (digit[0] & 0x0F); |
marcel1691 | 3:880adec02196 | 547 | data[3] = ((digit[1]>>4) & 0x0F) | (digit[3] & 0xF0); |
marcel1691 | 3:880adec02196 | 548 | data[4] = ((digit[0]>>4) & 0x0F) | (digit[2] & 0xF0); |
marcel1691 | 3:880adec02196 | 549 | i2c.write(saa1064, (char*) data, 5); |
marcel1691 | 3:880adec02196 | 550 | wait( 0.2 ); |
marcel1691 | 3:880adec02196 | 551 | } |
marcel1691 | 2:e263949513ca | 552 | } |
marcel1691 | 2:e263949513ca | 553 | |
marcel1691 | 2:e263949513ca | 554 | /** I2C Kommunikation mit Arduino */ |
marcel1691 | 2:e263949513ca | 555 | void doI2CArduino() |
marcel1691 | 2:e263949513ca | 556 | { |
marcel1691 | 2:e263949513ca | 557 | INFO ( "I2C Master Test\n" ); |
marcel1691 | 2:e263949513ca | 558 | I2C i2c( D14, D15 ); |
marcel1691 | 2:e263949513ca | 559 | |
marcel1691 | 2:e263949513ca | 560 | // CMD Buffer (cmd, addr, arg) |
marcel1691 | 2:e263949513ca | 561 | char cmd[4] = { 0x00, 0x00, 0x00, 0x00 }; |
marcel1691 | 2:e263949513ca | 562 | int slave = 0x10 << 1; |
marcel1691 | 2:e263949513ca | 563 | int status = 0; |
marcel1691 | 2:e263949513ca | 564 | |
marcel1691 | 2:e263949513ca | 565 | // write I2C |
marcel1691 | 2:e263949513ca | 566 | for ( int i = 4; i <= 7; i++ ) |
marcel1691 | 2:e263949513ca | 567 | { |
marcel1691 | 2:e263949513ca | 568 | cmd[0] = 'w'; |
marcel1691 | 2:e263949513ca | 569 | cmd[1] = i; |
marcel1691 | 2:e263949513ca | 570 | cmd[2] = 1; |
marcel1691 | 2:e263949513ca | 571 | printf( "write to %d, %d - ", slave, (int) cmd[2] ); |
marcel1691 | 2:e263949513ca | 572 | status = i2c.write( slave, cmd, 3 ); |
marcel1691 | 2:e263949513ca | 573 | printf("Status %d\n", status ); |
marcel1691 | 2:e263949513ca | 574 | wait( 1.0 ); |
marcel1691 | 2:e263949513ca | 575 | |
marcel1691 | 2:e263949513ca | 576 | cmd[0] = 'w'; |
marcel1691 | 2:e263949513ca | 577 | cmd[1] = i; |
marcel1691 | 2:e263949513ca | 578 | cmd[2] = 0; |
marcel1691 | 2:e263949513ca | 579 | printf( "write to %d, %d - ", slave, (int) cmd[2] ); |
marcel1691 | 2:e263949513ca | 580 | status = i2c.write( slave, cmd, 3 ); |
marcel1691 | 2:e263949513ca | 581 | printf("Status %d\n", status ); |
marcel1691 | 2:e263949513ca | 582 | wait( 0.5 ); |
marcel1691 | 2:e263949513ca | 583 | } |
marcel1691 | 2:e263949513ca | 584 | // read I2C |
marcel1691 | 2:e263949513ca | 585 | i2c.read( slave, cmd, 2 ); // Arduino liefert einen Wert von 0 - 1024 |
marcel1691 | 2:e263949513ca | 586 | printf ( "Analog %d\n", (int) (cmd[0] * 256 + cmd[1]) ); |
marcel1691 | 2:e263949513ca | 587 | } |
marcel1691 | 2:e263949513ca | 588 | |
marcel1691 | 2:e263949513ca | 589 | /** Buzzer (Summer) */ |
marcel1691 | 2:e263949513ca | 590 | void doBuzzer() |
marcel1691 | 2:e263949513ca | 591 | { |
marcel1691 | 2:e263949513ca | 592 | INFO( "Buzzer Test" ); |
marcel1691 | 2:e263949513ca | 593 | PwmOut buzzer( D7 ); |
marcel1691 | 3:880adec02196 | 594 | buzzer.period_us( 250 ); |
marcel1691 | 2:e263949513ca | 595 | |
marcel1691 | 3:880adec02196 | 596 | buzzer = 0.5; |
marcel1691 | 3:880adec02196 | 597 | wait( 1.0 ); |
marcel1691 | 3:880adec02196 | 598 | buzzer = 0.0; |
marcel1691 | 2:e263949513ca | 599 | } |
marcel1691 | 2:e263949513ca | 600 | |
marcel1691 | 0:1b22732d0d8d | 601 | /*------------------------------------------------------------------------ |
marcel1691 | 0:1b22732d0d8d | 602 | * Hauptprogramm |
marcel1691 | 0:1b22732d0d8d | 603 | ------------------------------------------------------------------------*/ |
marcel1691 | 2:e263949513ca | 604 | |
marcel1691 | 0:1b22732d0d8d | 605 | int main() |
marcel1691 | 0:1b22732d0d8d | 606 | { |
marcel1691 | 0:1b22732d0d8d | 607 | // SW2 + 3 auf K64F schalten Test vor- und zurueck. |
marcel1691 | 0:1b22732d0d8d | 608 | button1.fall( &next ); |
marcel1691 | 0:1b22732d0d8d | 609 | button2.fall( &previous ); |
marcel1691 | 0:1b22732d0d8d | 610 | |
marcel1691 | 0:1b22732d0d8d | 611 | while ( 1 ) |
marcel1691 | 0:1b22732d0d8d | 612 | { |
marcel1691 | 0:1b22732d0d8d | 613 | switch ( test ) |
marcel1691 | 0:1b22732d0d8d | 614 | { |
marcel1691 | 0:1b22732d0d8d | 615 | case 0: |
marcel1691 | 1:be86d02cd130 | 616 | doPrintAnalogeValues(); // Analoge Sensoren |
marcel1691 | 0:1b22732d0d8d | 617 | break; |
marcel1691 | 0:1b22732d0d8d | 618 | case 1: |
marcel1691 | 3:880adec02196 | 619 | //doLedTicker(); // Lauflicht |
marcel1691 | 0:1b22732d0d8d | 620 | break; |
marcel1691 | 0:1b22732d0d8d | 621 | case 2: |
marcel1691 | 1:be86d02cd130 | 622 | doServoThread(); // Kamara Plattform mit Servos |
marcel1691 | 0:1b22732d0d8d | 623 | break; |
marcel1691 | 0:1b22732d0d8d | 624 | case 3: |
marcel1691 | 3:880adec02196 | 625 | //doMotorThread(); // 2 Motoren |
marcel1691 | 0:1b22732d0d8d | 626 | break; |
marcel1691 | 0:1b22732d0d8d | 627 | case 4: |
marcel1691 | 1:be86d02cd130 | 628 | doStepperThread(); // Schrittmotor |
marcel1691 | 0:1b22732d0d8d | 629 | break; |
marcel1691 | 0:1b22732d0d8d | 630 | case 5: |
marcel1691 | 2:e263949513ca | 631 | doButtons(); // Buttons auf Shield |
marcel1691 | 2:e263949513ca | 632 | break; |
marcel1691 | 2:e263949513ca | 633 | case 6: |
marcel1691 | 1:be86d02cd130 | 634 | doMosfet(); // MOSFET LED oder LED Strip V12 |
marcel1691 | 0:1b22732d0d8d | 635 | break; |
marcel1691 | 1:be86d02cd130 | 636 | case 7: |
marcel1691 | 2:e263949513ca | 637 | doLEDStrip(); // LED Strip 12 Volt Variante |
marcel1691 | 2:e263949513ca | 638 | break; |
marcel1691 | 1:be86d02cd130 | 639 | case 8: |
marcel1691 | 1:be86d02cd130 | 640 | doSPILedStrip(); // LED Strip am SPI Bus |
marcel1691 | 1:be86d02cd130 | 641 | break; |
marcel1691 | 1:be86d02cd130 | 642 | case 9: |
marcel1691 | 2:e263949513ca | 643 | doRFIDReader(); // RFID Reader |
marcel1691 | 2:e263949513ca | 644 | break; |
marcel1691 | 1:be86d02cd130 | 645 | case 10: |
marcel1691 | 2:e263949513ca | 646 | doTempSensor(); // Temperatur Sensor am I2C Bus 0x40 |
marcel1691 | 2:e263949513ca | 647 | break; |
marcel1691 | 2:e263949513ca | 648 | case 11: |
marcel1691 | 2:e263949513ca | 649 | doBuzzer(); // Buzzer (Summer) |
marcel1691 | 2:e263949513ca | 650 | break; |
marcel1691 | 2:e263949513ca | 651 | case 12: |
marcel1691 | 3:880adec02196 | 652 | do4DigitLED(); // LCD im I2C Bus |
marcel1691 | 2:e263949513ca | 653 | break; |
marcel1691 | 2:e263949513ca | 654 | case 13: |
marcel1691 | 2:e263949513ca | 655 | doI2CArduino(); // Arduino am I2C Bus |
marcel1691 | 2:e263949513ca | 656 | break; |
marcel1691 | 2:e263949513ca | 657 | case 14: |
marcel1691 | 1:be86d02cd130 | 658 | doRC(); // RC Switch (Funk) |
marcel1691 | 1:be86d02cd130 | 659 | break; |
marcel1691 | 2:e263949513ca | 660 | case 15: |
marcel1691 | 1:be86d02cd130 | 661 | onReceiveIR(); // IR Receiver |
marcel1691 | 1:be86d02cd130 | 662 | break; |
marcel1691 | 2:e263949513ca | 663 | case 16: |
marcel1691 | 2:e263949513ca | 664 | doESP8266(); // WLAN Modem |
marcel1691 | 2:e263949513ca | 665 | break; |
marcel1691 | 0:1b22732d0d8d | 666 | default: |
marcel1691 | 0:1b22732d0d8d | 667 | break; |
marcel1691 | 0:1b22732d0d8d | 668 | } |
marcel1691 | 3:880adec02196 | 669 | test++; |
marcel1691 | 3:880adec02196 | 670 | if ( test > 16 ) |
marcel1691 | 3:880adec02196 | 671 | test = 0; |
marcel1691 | 3:880adec02196 | 672 | |
marcel1691 | 3:880adec02196 | 673 | doLedTicker(); // Lauflicht |
marcel1691 | 0:1b22732d0d8d | 674 | wait( 1.0 ); |
marcel1691 | 0:1b22732d0d8d | 675 | } |
marcel1691 | 0:1b22732d0d8d | 676 | } |