Anthony JUTON
/
VoitureAutonome_v1
Microcontrôleur de commande des E/S de la voiture
main.cpp@108:0fbfc4b71626, 2022-04-01 (annotated)
- Committer:
- ajuton
- Date:
- Fri Apr 01 16:25:01 2022 +0000
- Revision:
- 108:0fbfc4b71626
- Parent:
- 107:0965c72c798e
sans la led !
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_official | 82:abf1b1785bd7 | 1 | /* mbed Microcontroller Library |
mbed_official | 102:6979ad8bc0bc | 2 | * Copyright (c) 2019 ARM Limited |
mbed_official | 82:abf1b1785bd7 | 3 | * SPDX-License-Identifier: Apache-2.0 |
mbed_official | 82:abf1b1785bd7 | 4 | */ |
mbed_official | 82:abf1b1785bd7 | 5 | |
Jonathan Austin |
0:2757d7abb7d9 | 6 | #include "mbed.h" |
mbed_official | 100:ec006d6f3cb6 | 7 | #include "platform/mbed_thread.h" |
ajuton | 107:0965c72c798e | 8 | #include <string.h> |
ajuton | 107:0965c72c798e | 9 | #include <stdio.h> |
Jonathan Austin |
0:2757d7abb7d9 | 10 | |
Jonathan Austin |
0:2757d7abb7d9 | 11 | |
mbed_official | 102:6979ad8bc0bc | 12 | // Blinking rate in milliseconds |
mbed_official | 105:ed03c03b353e | 13 | #define BLINKING_RATE_MS 500 |
mbed_official | 88:bea4f2daa48c | 14 | |
ajuton | 107:0965c72c798e | 15 | AnalogIn capteurIR_G(A0); |
ajuton | 107:0965c72c798e | 16 | AnalogIn capteurIR_D(A2); |
ajuton | 107:0965c72c798e | 17 | |
ajuton | 107:0965c72c798e | 18 | PwmOut propulsion(D9); |
ajuton | 107:0965c72c798e | 19 | PwmOut direction(D6); |
ajuton | 107:0965c72c798e | 20 | |
ajuton | 107:0965c72c798e | 21 | DigitalIn BP1(D2); |
ajuton | 107:0965c72c798e | 22 | DigitalIn BP2(D3); |
ajuton | 107:0965c72c798e | 23 | |
ajuton | 108:0fbfc4b71626 | 24 | //DigitalOut led(LED1); |
ajuton | 107:0965c72c798e | 25 | |
ajuton | 107:0965c72c798e | 26 | static BufferedSerial serial_port(USBTX, USBRX,115200); |
ajuton | 107:0965c72c798e | 27 | SPISlave device(D11, D12, D13, A3); // mosi, miso, sclk, ssel |
mbed_official | 102:6979ad8bc0bc | 28 | |
mbed_official | 82:abf1b1785bd7 | 29 | int main() |
mbed_official | 82:abf1b1785bd7 | 30 | { |
ajuton | 107:0965c72c798e | 31 | char text[50] = {}; |
ajuton | 107:0965c72c798e | 32 | uint32_t bp1,bp1_old = 1; |
ajuton | 107:0965c72c798e | 33 | uint32_t bp2,bp2_old = 1; |
ajuton | 107:0965c72c798e | 34 | uint32_t pulsewidth_direction = 1100; |
ajuton | 107:0965c72c798e | 35 | uint16_t capteurIR_g,capteurIR_d; |
ajuton | 107:0965c72c798e | 36 | propulsion.period_us(20000); |
ajuton | 107:0965c72c798e | 37 | propulsion.pulsewidth_us(1500); |
ajuton | 107:0965c72c798e | 38 | direction.period_us(20000); |
ajuton | 107:0965c72c798e | 39 | direction.pulsewidth_us(pulsewidth_direction); |
Jonathan Austin |
0:2757d7abb7d9 | 40 | while (true) { |
ajuton | 107:0965c72c798e | 41 | bp1 = BP1.read(); |
ajuton | 107:0965c72c798e | 42 | bp2 = BP2.read(); |
ajuton | 107:0965c72c798e | 43 | |
ajuton | 107:0965c72c798e | 44 | if(!bp1 && bp1_old) |
ajuton | 107:0965c72c798e | 45 | { |
ajuton | 107:0965c72c798e | 46 | led = !led; |
ajuton | 107:0965c72c798e | 47 | if(pulsewidth_direction >1000) |
ajuton | 107:0965c72c798e | 48 | { |
ajuton | 107:0965c72c798e | 49 | pulsewidth_direction -= 10; |
ajuton | 107:0965c72c798e | 50 | } |
ajuton | 107:0965c72c798e | 51 | direction.pulsewidth_us(pulsewidth_direction); |
ajuton | 107:0965c72c798e | 52 | sprintf(text,"pulsewidth_direction = %d\n\r",pulsewidth_direction); |
ajuton | 107:0965c72c798e | 53 | serial_port.write(text,strlen(text)); |
ajuton | 107:0965c72c798e | 54 | capteurIR_g = capteurIR_G.read_u16(); |
ajuton | 107:0965c72c798e | 55 | sprintf(text,"capteurIR G = %d\n\r",capteurIR_g); |
ajuton | 107:0965c72c798e | 56 | serial_port.write(text,strlen(text)); |
ajuton | 107:0965c72c798e | 57 | } |
ajuton | 107:0965c72c798e | 58 | |
ajuton | 107:0965c72c798e | 59 | if(!bp2 && bp2_old) |
ajuton | 107:0965c72c798e | 60 | { |
ajuton | 107:0965c72c798e | 61 | if(pulsewidth_direction < 1300) |
ajuton | 107:0965c72c798e | 62 | { |
ajuton | 107:0965c72c798e | 63 | pulsewidth_direction += 10; |
ajuton | 107:0965c72c798e | 64 | } |
ajuton | 107:0965c72c798e | 65 | direction.pulsewidth_us(pulsewidth_direction); |
ajuton | 107:0965c72c798e | 66 | sprintf(text,"pulsewidth_direction = %d\n\r",pulsewidth_direction); |
ajuton | 107:0965c72c798e | 67 | serial_port.write(text,strlen(text)); |
ajuton | 107:0965c72c798e | 68 | capteurIR_d = capteurIR_D.read_u16(); |
ajuton | 107:0965c72c798e | 69 | sprintf(text,"capteurIR D = %d\n\r",capteurIR_d); |
ajuton | 107:0965c72c798e | 70 | serial_port.write(text,strlen(text)); |
ajuton | 107:0965c72c798e | 71 | } |
ajuton | 107:0965c72c798e | 72 | |
ajuton | 107:0965c72c798e | 73 | if (device.receive()) { |
ajuton | 107:0965c72c798e | 74 | int v = device.read(); // Read byte from master |
ajuton | 108:0fbfc4b71626 | 75 | //v = (v + 1) % 0x100; // Add one to it, modulo 256 |
ajuton | 108:0fbfc4b71626 | 76 | //device.reply(v); // Make this the next reply |
ajuton | 107:0965c72c798e | 77 | sprintf(text,"valeur du caractere recu SPI : %d\n\r",v); |
ajuton | 107:0965c72c798e | 78 | serial_port.write(text,strlen(text)); |
ajuton | 108:0fbfc4b71626 | 79 | if(v=='a') |
ajuton | 108:0fbfc4b71626 | 80 | led = 1; |
ajuton | 108:0fbfc4b71626 | 81 | else if (v=='e') |
ajuton | 108:0fbfc4b71626 | 82 | led = 0; |
ajuton | 107:0965c72c798e | 83 | } |
ajuton | 107:0965c72c798e | 84 | |
ajuton | 107:0965c72c798e | 85 | bp1_old = bp1; |
ajuton | 107:0965c72c798e | 86 | bp2_old = bp2; |
ajuton | 107:0965c72c798e | 87 | //thread_sleep_for(BLINKING_RATE_MS); |
Jonathan Austin |
0:2757d7abb7d9 | 88 | } |
Jonathan Austin |
0:2757d7abb7d9 | 89 | } |