![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Temperature sur LCD + Moteurs + Capteur Arret
Dependencies: HTU21D MD25 TextLCD mbed VCNL4000
Fork of HTU21D_HELLOWORLD by
main.cpp@5:e0b9e2bf8b35, 2015-04-13 (annotated)
- Committer:
- Guillaume31
- Date:
- Mon Apr 13 16:31:02 2015 +0000
- Revision:
- 5:e0b9e2bf8b35
- Parent:
- 4:28ea47b9e0ae
LCD + Arret + Luminosite + Temperature + Moteurs
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Guillaume31 | 3:56643150d07d | 1 | // Librairies |
Guillaume31 | 3:56643150d07d | 2 | #include "mbed.h" // Standard |
Guillaume31 | 3:56643150d07d | 3 | #include "MD25.h" // Moteurs |
Guillaume31 | 3:56643150d07d | 4 | #include "TextLCD.h" // Ecran LCD |
Guillaume31 | 3:56643150d07d | 5 | #include "HTU21D.h" // Capteur Temperature / Humidite |
Guillaume31 | 5:e0b9e2bf8b35 | 6 | #include "VCNL4000.h" // Capteur Luminosite / Distance |
Guillaume31 | 3:56643150d07d | 7 | |
Guillaume31 | 3:56643150d07d | 8 | |
Guillaume31 | 3:56643150d07d | 9 | // Declarations E/S ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 10 | |
Guillaume31 | 3:56643150d07d | 11 | DigitalIn bouton (USER_BUTTON); // Bouton d'arret total du robot |
Guillaume31 | 3:56643150d07d | 12 | DigitalIn bouton_poussoir(D9); // Pin PC7 Bouton poussoir demarrage |
Guillaume31 | 3:56643150d07d | 13 | DigitalIn cap_arret(PA_9); // Pin PA9 capteur d'arret (Devant) |
alipford3 | 0:8c0ef32974f0 | 14 | |
Guillaume31 | 3:56643150d07d | 15 | Serial pc(SERIAL_TX, SERIAL_RX); // Port Serie avec le PC |
Guillaume31 | 3:56643150d07d | 16 | |
Guillaume31 | 3:56643150d07d | 17 | TextLCD lcd(D2, D3, D4, D5, D6, D7,TextLCD::LCD20x4); // Ecran LDC (rs, e, d4-d7) |
Guillaume31 | 3:56643150d07d | 18 | MD25 i2c(I2C_SDA, I2C_SCL); // Moteurs : 100kHz clock, addr B0, reg 0=speedl, 1=speedr (0 (Full Reverse) 128 (Stop) 255 (Full Forward). 15=mode (set to 0 default) |
Guillaume31 | 3:56643150d07d | 19 | HTU21D temphumid(D14, D15);//HTU21D temp(I2C_SDA, I2C_SCL); // Capteur Temperature / Humidite |
Guillaume31 | 4:28ea47b9e0ae | 20 | VCNL4000 vcnl(D14, D15 );//VCNL40x0 VCNL40x0_Device (I2C_SDA, I2C_SCL, VCNL40x0_ADDRESS); // Capteur Luminosite / Distance Define SDA, SCL pin and I2C address |
Guillaume31 | 3:56643150d07d | 21 | |
Guillaume31 | 3:56643150d07d | 22 | |
Guillaume31 | 3:56643150d07d | 23 | // Fonctions pour les Moteurs //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 24 | // Prototypes //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 25 | void init_motors (void); // Initialisation des Moteurs |
Guillaume31 | 3:56643150d07d | 26 | void setSpeed (int speedMotor1, int speedMotor2); // Definir Vitesse moteurs |
alipford3 | 0:8c0ef32974f0 | 27 | |
Guillaume31 | 3:56643150d07d | 28 | // Definition //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 29 | void init_motors(void) { |
Guillaume31 | 3:56643150d07d | 30 | i2c.setMode(0); // MODE 0, 0=marche arriere 128=stop 255=marche arriere vmax |
Guillaume31 | 3:56643150d07d | 31 | i2c.setCommand(32); // 0x20 reset encoders |
Guillaume31 | 3:56643150d07d | 32 | i2c.setCommand(50); // 0X32 Disable time out |
Guillaume31 | 3:56643150d07d | 33 | //i2c.setCommand(32); // 0x20 reset encoders |
Guillaume31 | 3:56643150d07d | 34 | //i2c.setCommand(48); // 0X32 Disable speed regulation |
Guillaume31 | 3:56643150d07d | 35 | } |
Guillaume31 | 3:56643150d07d | 36 | |
Guillaume31 | 3:56643150d07d | 37 | void setSpeed (int vitMotor1, int vitMotor2) { |
Guillaume31 | 3:56643150d07d | 38 | i2c.setSpeedRegisters(vitMotor1,vitMotor2); |
Guillaume31 | 3:56643150d07d | 39 | } |
Guillaume31 | 3:56643150d07d | 40 | ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 41 | |
Guillaume31 | 4:28ea47b9e0ae | 42 | ////Fonction d'Initialisation ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 4:28ea47b9e0ae | 43 | // Luminosite ///////////////// |
Guillaume31 | 4:28ea47b9e0ae | 44 | void init_vcnl () { |
Guillaume31 | 4:28ea47b9e0ae | 45 | vcnl.setALAveragingFunction( 0x0f ); |
Guillaume31 | 4:28ea47b9e0ae | 46 | vcnl.setIRLedCurrent( 2000 ); |
Guillaume31 | 4:28ea47b9e0ae | 47 | vcnl.setProximityMeasurementSigFreq( 2 ); |
Guillaume31 | 4:28ea47b9e0ae | 48 | vcnl.setProxiModulatorDelayTime( 0x04 ); |
Guillaume31 | 4:28ea47b9e0ae | 49 | vcnl.setProxiModulatorDeadTime( 0x01 ); |
Guillaume31 | 4:28ea47b9e0ae | 50 | } |
Guillaume31 | 3:56643150d07d | 51 | |
Guillaume31 | 4:28ea47b9e0ae | 52 | // Initialisation ///////////////// |
Guillaume31 | 3:56643150d07d | 53 | void initialisations () { |
Guillaume31 | 3:56643150d07d | 54 | lcd.printf("Initialisation\n"); |
Guillaume31 | 3:56643150d07d | 55 | pc.printf("Initialisation\n\r"); |
Guillaume31 | 3:56643150d07d | 56 | bouton.mode (PullUp); // Bouton Utilisateur |
Guillaume31 | 3:56643150d07d | 57 | bouton_poussoir.mode (PullUp); // Bouton Poussoir |
Guillaume31 | 3:56643150d07d | 58 | init_motors(); // Initialise Moteur |
Guillaume31 | 4:28ea47b9e0ae | 59 | int status = vcnl.getStatus(); |
Guillaume31 | 4:28ea47b9e0ae | 60 | if( status != 0 ) { |
Guillaume31 | 4:28ea47b9e0ae | 61 | lcd.printf( "Erreur VCNL !!\n\r"); wait (4); |
Guillaume31 | 4:28ea47b9e0ae | 62 | exit( 1 ); |
Guillaume31 | 4:28ea47b9e0ae | 63 | } |
Guillaume31 | 4:28ea47b9e0ae | 64 | init_vcnl(); |
Guillaume31 | 3:56643150d07d | 65 | |
Guillaume31 | 3:56643150d07d | 66 | pc.printf("Fin Initialisation\n\r"); |
Guillaume31 | 3:56643150d07d | 67 | lcd.printf("Fin Initialisation\n"); |
Guillaume31 | 4:28ea47b9e0ae | 68 | wait(0.5); |
Guillaume31 | 3:56643150d07d | 69 | } |
alipford3 | 0:8c0ef32974f0 | 70 | |
Guillaume31 | 3:56643150d07d | 71 | // Fonction Principale ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 72 | int main() { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 73 | pc.printf("\n\n\n\n\n\n\n\n Majord'home: Hello! Programme\n\r"); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 74 | lcd.printf("Majord'home: Hello!\n"); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 75 | wait(1); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 76 | initialisations (); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 77 | |
Guillaume31 | 3:56643150d07d | 78 | // Declaration Variables Locales |
Guillaume31 | 3:56643150d07d | 79 | float Ftemp, Ctemp, Ktemp, Humid; // Temperature et humidite |
Guillaume31 | 4:28ea47b9e0ae | 80 | int prox, ambl; // Proximite et Luminosite |
Guillaume31 | 4:28ea47b9e0ae | 81 | |
Guillaume31 | 3:56643150d07d | 82 | |
Guillaume31 | 3:56643150d07d | 83 | // Init des Temperatures et Humidite |
Guillaume31 | 3:56643150d07d | 84 | Ftemp = temphumid.sample_ftemp(); Ctemp = temphumid.sample_ctemp(); Ktemp = temphumid.sample_ktemp(); Humid = temphumid.sample_humid(); |
Guillaume31 | 4:28ea47b9e0ae | 85 | // Init des Proximite et Luminosite |
Guillaume31 | 4:28ea47b9e0ae | 86 | prox = vcnl.getProximity(); ambl = vcnl.getAmbientLight(); |
Guillaume31 | 3:56643150d07d | 87 | |
Guillaume31 | 3:56643150d07d | 88 | // Boucle Infinie ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 89 | lcd.cls(); lcd.locate(0,0); |
Guillaume31 | 3:56643150d07d | 90 | lcd.printf("%.2f C %.2f %% Hum", Ctemp, Humid); lcd.locate(0,1); |
Guillaume31 | 3:56643150d07d | 91 | lcd.printf("%.2f F %.2f K", Ftemp, Ktemp); lcd.locate(0,2); |
Guillaume31 | 4:28ea47b9e0ae | 92 | lcd.printf("Lum %d Pr %d", ambl, prox); lcd.locate(0,3); |
Guillaume31 | 3:56643150d07d | 93 | lcd.printf("Debut While(1)"); |
Guillaume31 | 3:56643150d07d | 94 | pc.printf("Debut While(1)\n\r"); |
Guillaume31 | 4:28ea47b9e0ae | 95 | wait(2); lcd.cls(); lcd.locate(0,0); |
Guillaume31 | 3:56643150d07d | 96 | |
Guillaume31 | 3:56643150d07d | 97 | while(1) { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Guillaume31 | 3:56643150d07d | 98 | |
Guillaume31 | 4:28ea47b9e0ae | 99 | // Affichage temperature humidite |
Guillaume31 | 3:56643150d07d | 100 | lcd.locate(0,0); |
Guillaume31 | 3:56643150d07d | 101 | Ctemp = temphumid.sample_ctemp(); Humid = temphumid.sample_humid(); |
Guillaume31 | 3:56643150d07d | 102 | lcd.printf("%.2f C %.2f %% Hum", Ctemp, Humid); |
Guillaume31 | 4:28ea47b9e0ae | 103 | // Affichage Luminosite proximite |
Guillaume31 | 4:28ea47b9e0ae | 104 | lcd.locate(0,1); |
Guillaume31 | 4:28ea47b9e0ae | 105 | prox = vcnl.getProximity(); ambl = vcnl.getAmbientLight(); |
Guillaume31 | 4:28ea47b9e0ae | 106 | lcd.printf("Lum %d Pr %d", ambl, prox); |
Guillaume31 | 3:56643150d07d | 107 | |
Guillaume31 | 3:56643150d07d | 108 | |
Guillaume31 | 4:28ea47b9e0ae | 109 | // Arret moteur si Obstacle detecte |
Guillaume31 | 3:56643150d07d | 110 | lcd.locate(0,2); |
Guillaume31 | 3:56643150d07d | 111 | cap_arret.read(); |
Guillaume31 | 3:56643150d07d | 112 | if (cap_arret==0) { |
Guillaume31 | 3:56643150d07d | 113 | lcd.printf("A=0"); |
Guillaume31 | 3:56643150d07d | 114 | setSpeed(128,128); |
Guillaume31 | 3:56643150d07d | 115 | } |
Guillaume31 | 4:28ea47b9e0ae | 116 | else |
Guillaume31 | 3:56643150d07d | 117 | lcd.printf("A=1"); |
Guillaume31 | 4:28ea47b9e0ae | 118 | |
Guillaume31 | 4:28ea47b9e0ae | 119 | // Lancement moteur |
Guillaume31 | 4:28ea47b9e0ae | 120 | if (bouton_poussoir == 0) |
Guillaume31 | 4:28ea47b9e0ae | 121 | setSpeed(60,60); |
Guillaume31 | 3:56643150d07d | 122 | |
alipford3 | 0:8c0ef32974f0 | 123 | } |
alipford3 | 0:8c0ef32974f0 | 124 | } |