Repositorio para el proyecto de hidroponia

Dependencies:   mbed SeeedShieldBot BluetoothSerial

Committer:
iwhalk
Date:
Thu Jun 09 22:39:16 2022 +0000
Revision:
0:fb703ad291fb
primer commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
iwhalk 0:fb703ad291fb 1 #include "mbed.h"
iwhalk 0:fb703ad291fb 2 #include "BluetoothSerial.h"
iwhalk 0:fb703ad291fb 3 #include "SeeedStudioShieldBot.h"
iwhalk 0:fb703ad291fb 4
iwhalk 0:fb703ad291fb 5 // The following configuration must be done on the NUCLEO board:
iwhalk 0:fb703ad291fb 6 // - Close SB62/SB63 and open SB13/SB14 solder bridges to enable the D0/D1 pins
iwhalk 0:fb703ad291fb 7 // - Open SB21 solder bridge to disconnect the LED
iwhalk 0:fb703ad291fb 8
iwhalk 0:fb703ad291fb 9 BluetoothSerial bluetooth(D1, D0); // TX, RX
iwhalk 0:fb703ad291fb 10
iwhalk 0:fb703ad291fb 11 #ifdef TARGET_NUCLEO_L053R8
iwhalk 0:fb703ad291fb 12 #define PWM1 D6 // Connect D6 and D8
iwhalk 0:fb703ad291fb 13 #define PWM2 D12
iwhalk 0:fb703ad291fb 14 #else // NUCLEO_F072RB
iwhalk 0:fb703ad291fb 15 #define PWM1 D8
iwhalk 0:fb703ad291fb 16 #define PWM2 D12
iwhalk 0:fb703ad291fb 17 #endif
iwhalk 0:fb703ad291fb 18
iwhalk 0:fb703ad291fb 19 SeeedStudioShieldBot bot(
iwhalk 0:fb703ad291fb 20 PWM1, D9, D11, // Right motor pins (PwmOut, DigitalOut, DigitalOut) -> Motor 1
iwhalk 0:fb703ad291fb 21 PWM2, D10, D13, // Left motor pins (PwmOut, DigitalOut, DigitalOut) -> Motor 2
iwhalk 0:fb703ad291fb 22 A0, A1, A2, A3, A4 // Sensors pins (all DigitalIn)
iwhalk 0:fb703ad291fb 23 );
iwhalk 0:fb703ad291fb 24
iwhalk 0:fb703ad291fb 25 // Disable the feature by wiring A5 to GND
iwhalk 0:fb703ad291fb 26 DigitalIn ReadSensorsEnabled(A5, PullUp);
iwhalk 0:fb703ad291fb 27
iwhalk 0:fb703ad291fb 28 // Enable it for debugging on hyperterminal
iwhalk 0:fb703ad291fb 29 #define DEBUG 0
iwhalk 0:fb703ad291fb 30 #if DEBUG == 1
iwhalk 0:fb703ad291fb 31 Serial pc(PC_10, PC_11); // Connect PC10 and CN3-RX
iwhalk 0:fb703ad291fb 32 #define PC_DEBUG(args...) pc.printf(args)
iwhalk 0:fb703ad291fb 33 #else
iwhalk 0:fb703ad291fb 34 #define PC_DEBUG(args...)
iwhalk 0:fb703ad291fb 35 #endif
iwhalk 0:fb703ad291fb 36
iwhalk 0:fb703ad291fb 37 Ticker tick;
iwhalk 0:fb703ad291fb 38
iwhalk 0:fb703ad291fb 39 float speed = 1.0; // Used to select the motors speed
iwhalk 0:fb703ad291fb 40 int stop = 0; // Used to stop the motors when a sensor detects something
iwhalk 0:fb703ad291fb 41
iwhalk 0:fb703ad291fb 42 void ReadCommand(void)
iwhalk 0:fb703ad291fb 43 {
iwhalk 0:fb703ad291fb 44 int cmd = 0;
iwhalk 0:fb703ad291fb 45 PC_DEBUG(">>> Read command...\n");
iwhalk 0:fb703ad291fb 46
iwhalk 0:fb703ad291fb 47 if (bluetooth.readable())
iwhalk 0:fb703ad291fb 48 {
iwhalk 0:fb703ad291fb 49 cmd = bluetooth.getc();
iwhalk 0:fb703ad291fb 50 PC_DEBUG(">>> Bluetooth read [%c]\n", cmd);
iwhalk 0:fb703ad291fb 51
iwhalk 0:fb703ad291fb 52 // Ignore the receive command (excepted "Backward") if a sensor has detected something.
iwhalk 0:fb703ad291fb 53 if ((stop) && (cmd != '2')) return;
iwhalk 0:fb703ad291fb 54
iwhalk 0:fb703ad291fb 55 switch (cmd)
iwhalk 0:fb703ad291fb 56 {
iwhalk 0:fb703ad291fb 57 case '1': // Forward
iwhalk 0:fb703ad291fb 58 bot.forward(speed);
iwhalk 0:fb703ad291fb 59 break;
iwhalk 0:fb703ad291fb 60 case '2': // Backward
iwhalk 0:fb703ad291fb 61 bot.backward(speed);
iwhalk 0:fb703ad291fb 62 break;
iwhalk 0:fb703ad291fb 63 case '3': // Left
iwhalk 0:fb703ad291fb 64 bot.left(speed);
iwhalk 0:fb703ad291fb 65 break;
iwhalk 0:fb703ad291fb 66 case '4': // Right
iwhalk 0:fb703ad291fb 67 bot.right(speed);
iwhalk 0:fb703ad291fb 68 break;
iwhalk 0:fb703ad291fb 69 case '5': // Turn left forward
iwhalk 0:fb703ad291fb 70 bot.turn_right(speed);
iwhalk 0:fb703ad291fb 71 break;
iwhalk 0:fb703ad291fb 72 case '6': // Turn right forward
iwhalk 0:fb703ad291fb 73 bot.turn_left(speed);
iwhalk 0:fb703ad291fb 74 break;
iwhalk 0:fb703ad291fb 75 case '7': // Turn left backward
iwhalk 0:fb703ad291fb 76 bot.turn_right(-speed);
iwhalk 0:fb703ad291fb 77 break;
iwhalk 0:fb703ad291fb 78 case '8': // Turn right backward
iwhalk 0:fb703ad291fb 79 bot.turn_left(-speed);
iwhalk 0:fb703ad291fb 80 break;
iwhalk 0:fb703ad291fb 81 case '9': // Slow
iwhalk 0:fb703ad291fb 82 speed = 0.5;
iwhalk 0:fb703ad291fb 83 break;
iwhalk 0:fb703ad291fb 84 case 'A': // Fast
iwhalk 0:fb703ad291fb 85 speed = 1.0;
iwhalk 0:fb703ad291fb 86 break;
iwhalk 0:fb703ad291fb 87 default: // Stop
iwhalk 0:fb703ad291fb 88 bot.stopAll();
iwhalk 0:fb703ad291fb 89 break;
iwhalk 0:fb703ad291fb 90 }
iwhalk 0:fb703ad291fb 91 }
iwhalk 0:fb703ad291fb 92 }
iwhalk 0:fb703ad291fb 93
iwhalk 0:fb703ad291fb 94 int main()
iwhalk 0:fb703ad291fb 95 {
iwhalk 0:fb703ad291fb 96 PC_DEBUG("\n\nSeeed Bluetooth shield test started.\n");
iwhalk 0:fb703ad291fb 97
iwhalk 0:fb703ad291fb 98 // Enable motors
iwhalk 0:fb703ad291fb 99 bot.enable_right_motor();
iwhalk 0:fb703ad291fb 100 bot.enable_left_motor();
iwhalk 0:fb703ad291fb 101
iwhalk 0:fb703ad291fb 102 PC_DEBUG(">>> Bluetooth setup...");
iwhalk 0:fb703ad291fb 103 bluetooth.setup();
iwhalk 0:fb703ad291fb 104 PC_DEBUG("done\n");
iwhalk 0:fb703ad291fb 105
iwhalk 0:fb703ad291fb 106 PC_DEBUG(">>> Bluetooth in slave mode...");
iwhalk 0:fb703ad291fb 107 bluetooth.slave("bt_seeed_1"); // default PIN code: 0000
iwhalk 0:fb703ad291fb 108 PC_DEBUG("done\n");
iwhalk 0:fb703ad291fb 109
iwhalk 0:fb703ad291fb 110 wait(2);
iwhalk 0:fb703ad291fb 111
iwhalk 0:fb703ad291fb 112 PC_DEBUG(">>> Bluetooth connect...");
iwhalk 0:fb703ad291fb 113 bluetooth.connect();
iwhalk 0:fb703ad291fb 114 PC_DEBUG("done\n");
iwhalk 0:fb703ad291fb 115
iwhalk 0:fb703ad291fb 116 tick.attach(ReadCommand, 0.3); // Every 300 ms read Bluetooth command
iwhalk 0:fb703ad291fb 117
iwhalk 0:fb703ad291fb 118 // Check if motors are alive
iwhalk 0:fb703ad291fb 119 bot.left(speed);
iwhalk 0:fb703ad291fb 120 wait(0.2);
iwhalk 0:fb703ad291fb 121 bot.right(speed);
iwhalk 0:fb703ad291fb 122 wait(0.2);
iwhalk 0:fb703ad291fb 123 bot.stopAll();
iwhalk 0:fb703ad291fb 124
iwhalk 0:fb703ad291fb 125 while (1) {
iwhalk 0:fb703ad291fb 126 // Stop the motors if a sensor has detected something.
iwhalk 0:fb703ad291fb 127 if ((!bot.rightSensor || !bot.inRightSensor || !bot.centreSensor || !bot.inLeftSensor || !bot.leftSensor) && ReadSensorsEnabled)
iwhalk 0:fb703ad291fb 128 {
iwhalk 0:fb703ad291fb 129 if (!stop) bot.stopAll();
iwhalk 0:fb703ad291fb 130 stop = 1;
iwhalk 0:fb703ad291fb 131 }
iwhalk 0:fb703ad291fb 132 else
iwhalk 0:fb703ad291fb 133 {
iwhalk 0:fb703ad291fb 134 stop = 0;
iwhalk 0:fb703ad291fb 135 }
iwhalk 0:fb703ad291fb 136 }
iwhalk 0:fb703ad291fb 137 }