Majordhome V1.0
Dependencies: MD25 TextLCD mbed HTU21D PixyLibrary VCNL40x0
main.cpp@1:38ebbd3ed083, 2015-04-13 (annotated)
- Committer:
- johnylafleur
- Date:
- Mon Apr 13 12:33:04 2015 +0000
- Revision:
- 1:38ebbd3ed083
- Parent:
- 0:11ba3658cd5e
Maj;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
johnylafleur | 1:38ebbd3ed083 | 1 | // Include |
johnylafleur | 0:11ba3658cd5e | 2 | #include "mbed.h" |
johnylafleur | 0:11ba3658cd5e | 3 | #include "MD25.h" |
johnylafleur | 0:11ba3658cd5e | 4 | #include "mbed.h" |
johnylafleur | 0:11ba3658cd5e | 5 | #include "TextLCD.h" |
johnylafleur | 1:38ebbd3ed083 | 6 | #include "HTU21D.h" |
johnylafleur | 1:38ebbd3ed083 | 7 | #include "VCNL40x0.h" |
johnylafleur | 0:11ba3658cd5e | 8 | |
johnylafleur | 1:38ebbd3ed083 | 9 | void init_motors (void); // prototype initialisation des moteurs |
johnylafleur | 1:38ebbd3ed083 | 10 | void setSpeed (int speedMotor1, int speedMotor2); // prototye Definir Vitesse moteurs |
johnylafleur | 1:38ebbd3ed083 | 11 | |
johnylafleur | 0:11ba3658cd5e | 12 | |
johnylafleur | 0:11ba3658cd5e | 13 | |
johnylafleur | 1:38ebbd3ed083 | 14 | TextLCD lcd(D2, D3, D4, D5, D6, D7,TextLCD::LCD20x4); // rs, e, d4-d7 |
johnylafleur | 1:38ebbd3ed083 | 15 | MD25 i2c(I2C_SDA, I2C_SCL); //100kHz clock, addr B0, reg 0=speedl, 1=speedr (0 (Full Reverse) 128 (Stop) 255 (Full Forward). 15=mode (set to 0 default) |
johnylafleur | 1:38ebbd3ed083 | 16 | //HTU21D temp(I2C_SDA, I2C_SCL); // SDA,SC |
johnylafleur | 1:38ebbd3ed083 | 17 | //VCNL40x0 VCNL40x0_Device (I2C_SDA, I2C_SCL, VCNL40x0_ADDRESS); // Define SDA, SCL pin and I2C address |
johnylafleur | 1:38ebbd3ed083 | 18 | DigitalIn bouton (USER_BUTTON); // Bouton d'arret total du robot |
johnylafleur | 1:38ebbd3ed083 | 19 | DigitalIn bouton_poussoir(D9); // Pin PC7 Bouton poussoir demarrage |
johnylafleur | 1:38ebbd3ed083 | 20 | DigitalIn cap_arret(PA_9); // Pin PA9 capteur d'arret |
johnylafleur | 1:38ebbd3ed083 | 21 | |
johnylafleur | 0:11ba3658cd5e | 22 | |
johnylafleur | 1:38ebbd3ed083 | 23 | |
johnylafleur | 1:38ebbd3ed083 | 24 | void init_motors(void){ |
johnylafleur | 0:11ba3658cd5e | 25 | i2c.setMode(0); // MODE 0, 0=marche arriere 128=stop 255=marche arriere vmax |
johnylafleur | 0:11ba3658cd5e | 26 | i2c.setCommand(32); // 0x20 reset encoders |
johnylafleur | 0:11ba3658cd5e | 27 | i2c.setCommand(50); // 0X32 Disable time out |
johnylafleur | 1:38ebbd3ed083 | 28 | //i2c.setCommand(32); // 0x20 reset encoders |
johnylafleur | 0:11ba3658cd5e | 29 | //i2c.setCommand(48); // 0X32 Disable speed regulation |
johnylafleur | 1:38ebbd3ed083 | 30 | } |
johnylafleur | 1:38ebbd3ed083 | 31 | void setSpeed (int vitMotor1, int vitMotor2){ |
johnylafleur | 1:38ebbd3ed083 | 32 | i2c.setSpeedRegisters(vitMotor1,vitMotor2); |
johnylafleur | 1:38ebbd3ed083 | 33 | } |
johnylafleur | 1:38ebbd3ed083 | 34 | |
johnylafleur | 0:11ba3658cd5e | 35 | |
johnylafleur | 1:38ebbd3ed083 | 36 | int main() { |
johnylafleur | 1:38ebbd3ed083 | 37 | int flag=0; |
johnylafleur | 1:38ebbd3ed083 | 38 | unsigned char ID=0; |
johnylafleur | 1:38ebbd3ed083 | 39 | //unsigned char Current=0; |
johnylafleur | 1:38ebbd3ed083 | 40 | //unsigned int ProxiValue=0; |
johnylafleur | 1:38ebbd3ed083 | 41 | //// unsigned int AmbiValue=0; |
johnylafleur | 1:38ebbd3ed083 | 42 | //float Temp,Hum; |
johnylafleur | 1:38ebbd3ed083 | 43 | bouton.mode (PullUp); |
johnylafleur | 1:38ebbd3ed083 | 44 | bouton_poussoir.mode (PullUp); |
johnylafleur | 1:38ebbd3ed083 | 45 | init_motors(); |
johnylafleur | 1:38ebbd3ed083 | 46 | |
johnylafleur | 0:11ba3658cd5e | 47 | |
johnylafleur | 0:11ba3658cd5e | 48 | |
johnylafleur | 0:11ba3658cd5e | 49 | |
johnylafleur | 1:38ebbd3ed083 | 50 | lcd.printf("Majord'home: Hello!\n"); |
johnylafleur | 1:38ebbd3ed083 | 51 | while(bouton_poussoir==1){ |
johnylafleur | 1:38ebbd3ed083 | 52 | i2c.stopMotors(); |
johnylafleur | 1:38ebbd3ed083 | 53 | } |
johnylafleur | 1:38ebbd3ed083 | 54 | setSpeed(60,60); |
johnylafleur | 1:38ebbd3ed083 | 55 | wait(2); |
johnylafleur | 1:38ebbd3ed083 | 56 | lcd.cls(); |
johnylafleur | 1:38ebbd3ed083 | 57 | //Temp=temp.sample_ctemp(); |
johnylafleur | 1:38ebbd3ed083 | 58 | //Hum=temp.sample_humid(); |
johnylafleur | 1:38ebbd3ed083 | 59 | //lcd.printf("Temp=%.2f, Humidite=%.2f",Temp,Hum); |
johnylafleur | 1:38ebbd3ed083 | 60 | // VCNL40x0_Device.ReadID (&ID); // Read VCNL40x0 product ID revision register |
johnylafleur | 1:38ebbd3ed083 | 61 | // VCNL40x0_Device.SetCurrent (20); // Set current to 200mA |
johnylafleur | 1:38ebbd3ed083 | 62 | // VCNL40x0_Device.ReadCurrent (&Current); // Read back IR LED current |
johnylafleur | 1:38ebbd3ed083 | 63 | |
johnylafleur | 1:38ebbd3ed083 | 64 | |
johnylafleur | 1:38ebbd3ed083 | 65 | //wait(2); |
johnylafleur | 1:38ebbd3ed083 | 66 | //lcd.cls(); |
johnylafleur | 1:38ebbd3ed083 | 67 | |
johnylafleur | 1:38ebbd3ed083 | 68 | |
johnylafleur | 0:11ba3658cd5e | 69 | while(flag==0) { |
johnylafleur | 1:38ebbd3ed083 | 70 | // VCNL40x0_Device.ReadProxiOnDemand (&ProxiValue); // read prox value on demand |
johnylafleur | 1:38ebbd3ed083 | 71 | //VCNL40x0_Device.ReadAmbiOnDemand (&AmbiValue); // read ambi value on demand |
johnylafleur | 1:38ebbd3ed083 | 72 | //lcd.printf("Proxi:%5.0i cts \tAmbi:%5.0i cts \tIlluminance:%7.2f lx", ProxiValue, AmbiValue, AmbiValue/4.0); |
johnylafleur | 1:38ebbd3ed083 | 73 | |
johnylafleur | 1:38ebbd3ed083 | 74 | //wait(3); |
johnylafleur | 1:38ebbd3ed083 | 75 | //lcd.cls(); |
johnylafleur | 0:11ba3658cd5e | 76 | cap_arret.read(); |
johnylafleur | 0:11ba3658cd5e | 77 | if(cap_arret==0){ |
johnylafleur | 0:11ba3658cd5e | 78 | i2c.stopMotors(); |
johnylafleur | 1:38ebbd3ed083 | 79 | lcd.printf("Engine break ON "); |
johnylafleur | 0:11ba3658cd5e | 80 | lcd.locate(0,0); |
johnylafleur | 1:38ebbd3ed083 | 81 | wait(1); |
johnylafleur | 1:38ebbd3ed083 | 82 | setSpeed(32,160); |
johnylafleur | 1:38ebbd3ed083 | 83 | wait(0.77);//demi tour |
johnylafleur | 0:11ba3658cd5e | 84 | } |
johnylafleur | 0:11ba3658cd5e | 85 | else if(bouton==0){ |
johnylafleur | 0:11ba3658cd5e | 86 | i2c.stopMotors(); |
johnylafleur | 1:38ebbd3ed083 | 87 | lcd.printf("Majord'home: Good Bye! "); |
johnylafleur | 0:11ba3658cd5e | 88 | lcd.locate(0,0); |
johnylafleur | 0:11ba3658cd5e | 89 | flag=1; |
johnylafleur | 0:11ba3658cd5e | 90 | } |
johnylafleur | 0:11ba3658cd5e | 91 | else{ |
johnylafleur | 1:38ebbd3ed083 | 92 | setSpeed(64,64); |
johnylafleur | 1:38ebbd3ed083 | 93 | lcd.printf("Engine break OFF"); |
johnylafleur | 1:38ebbd3ed083 | 94 | lcd.locate(0,0); |
johnylafleur | 1:38ebbd3ed083 | 95 | } |
johnylafleur | 1:38ebbd3ed083 | 96 | } |
johnylafleur | 1:38ebbd3ed083 | 97 | } |
johnylafleur | 1:38ebbd3ed083 | 98 | |
johnylafleur | 0:11ba3658cd5e | 99 | |
johnylafleur | 1:38ebbd3ed083 | 100 | /* Debug Serie |
johnylafleur | 1:38ebbd3ed083 | 101 | Serial debug(USBTX,USBRX); |
johnylafleur | 1:38ebbd3ed083 | 102 | debug.format(8,Serial::None,1); |
johnylafleur | 1:38ebbd3ed083 | 103 | debug.baud(115200); |
johnylafleur | 1:38ebbd3ed083 | 104 | */ |
johnylafleur | 1:38ebbd3ed083 | 105 | |
johnylafleur | 1:38ebbd3ed083 | 106 | |
johnylafleur | 1:38ebbd3ed083 | 107 | |
johnylafleur | 1:38ebbd3ed083 | 108 | |
johnylafleur | 1:38ebbd3ed083 | 109 | |
johnylafleur | 1:38ebbd3ed083 | 110 | |
johnylafleur | 1:38ebbd3ed083 | 111 | |
johnylafleur | 1:38ebbd3ed083 | 112 | |
johnylafleur | 1:38ebbd3ed083 | 113 | |
johnylafleur | 1:38ebbd3ed083 | 114 | |
johnylafleur | 1:38ebbd3ed083 | 115 | |
johnylafleur | 1:38ebbd3ed083 | 116 | |
johnylafleur | 1:38ebbd3ed083 | 117 |