.
Dependencies: L432KC_SPI_Pey_Lal
main.cpp@107:0965c72c798e, 2022-03-24 (annotated)
- Committer:
- ajuton
- Date:
- Thu Mar 24 21:23:09 2022 +0000
- Revision:
- 107:0965c72c798e
- Parent:
- 105:ed03c03b353e
- Child:
- 108:2fd41d299a8c
code communication avec Raspberry Pi via spi
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 | 107:0965c72c798e | 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 | 107:0965c72c798e | 75 | v = (v + 1) % 0x100; // Add one to it, modulo 256 |
ajuton | 107:0965c72c798e | 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 | 107:0965c72c798e | 79 | } |
ajuton | 107:0965c72c798e | 80 | |
ajuton | 107:0965c72c798e | 81 | bp1_old = bp1; |
ajuton | 107:0965c72c798e | 82 | bp2_old = bp2; |
ajuton | 107:0965c72c798e | 83 | //thread_sleep_for(BLINKING_RATE_MS); |
Jonathan Austin |
0:2757d7abb7d9 | 84 | } |
Jonathan Austin |
0:2757d7abb7d9 | 85 | } |