Taster+Leds
Dependencies: mbed
main.cpp
- Committer:
- floza
- Date:
- 2016-01-18
- Revision:
- 0:e9090884eb32
File content as of revision 0:e9090884eb32:
#include "mbed.h" I2C i2c(p28, p27); PwmOut MotorL_EN(p34); DigitalOut MotorL_REVERSE(P1_0); DigitalOut MotorL_FORWARD(P1_1); PwmOut MotorR_EN(p36); DigitalOut MotorR_FORWARD(P1_3); DigitalOut MotorR_REVERSE(P1_4); BusIn linesensor(P0_14, P0_12, P0_16, P0_13); const int addr = 0x40; // I2C-Adresse des PCA9555 char cmd[3]; char WertLesen(); void TasterVorneRechts(); void TasterVorneMitte(); void TasterVorneLinks(); void TasterHinten(); int main() { char btn = 0; /*** I2C Konfigurationen ***/ i2c.frequency(40000); cmd[0] = 0x06; cmd[1] = 0x00; i2c.write(addr, cmd, 2); cmd[0] = 0x02; while(1) { MotorR_FORWARD = MotorL_FORWARD = 1; MotorR_EN = MotorL_EN = 1; cmd[1] = 0xFA; i2c.write(addr, cmd, 2); btn = WertLesen(); if(btn == 128) TasterVorneRechts(); if(btn == 4 || btn == 1 || btn == 8) TasterVorneMitte(); if(btn == 64) TasterVorneLinks(); if(btn == 16 || btn == 2 || btn == 32) TasterHinten(); wait(0.1); MotorR_EN = MotorL_EN = 0; MotorR_FORWARD = MotorL_FORWARD = 0; } } char WertLesen() { char btn; i2c.start(); i2c.write(0x40); i2c.write(0x01); i2c.start(); i2c.write(0x41); btn = i2c.read(0); i2c.stop(); return btn; } void TasterHinten() { MotorR_FORWARD = MotorL_FORWARD = MotorL_REVERSE = MotorR_REVERSE = 0; MotorR_FORWARD = MotorL_FORWARD = 1; MotorR_EN = MotorL_EN = 0.5f; wait(1); MotorR_FORWARD = MotorL_FORWARD = 0; } void TasterVorneRechts() { int i = 0; MotorR_FORWARD = MotorL_FORWARD = 0; MotorL_REVERSE = 1; MotorL_EN = 0.5f; do{ cmd[1] = 0x77; i2c.write(addr, cmd, 2); wait(0.07); cmd[1] = 0xFF; i2c.write(addr, cmd, 2); wait(0.07); i++; }while(i < 7); MotorL_REVERSE = 0; MotorL_EN = 0; } void TasterVorneMitte() { int i =0; MotorR_FORWARD = MotorL_FORWARD = 0; MotorL_REVERSE = MotorR_REVERSE = 1; MotorL_EN = MotorR_EN = 0.5f; cmd[1] = 0xAF; i2c.write(addr, cmd, 2); wait(1); MotorL_REVERSE = MotorR_REVERSE = 0; MotorL_REVERSE = MotorR_FORWARD = 1; do { cmd[1] = 0x00; i2c.write(addr, cmd, 2); wait(0.07); cmd[1] = 0xFF; i2c.write(addr, cmd, 2); wait(0.07); i++; }while(i < 4); MotorL_REVERSE = MotorR_FORWARD = 0; MotorL_EN = MotorR_EN = 0; } void TasterVorneLinks() { int i =0; MotorR_FORWARD = MotorL_FORWARD = 0; MotorR_REVERSE = 1; MotorR_EN = 0.5f; do { cmd[1] = 0xDD; i2c.write(addr, cmd, 2); wait(0.07); cmd[1] = 0xFF; i2c.write(addr, cmd, 2); wait(0.07); i++; }while(i < 7); MotorR_REVERSE = 0; MotorR_EN = 0; }