Microcontrôleur de commande des E/S de la voiture

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?

UserRevisionLine numberNew 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 }