Я работаю на линии, следующей за роботом. Я получаю цифровые сигналы от своих инфракрасных датчиков на моих контактах PORTC. машина работает отлично. Теперь мне нужно построить график, отправив переменную в мой код Python из кода C, который я использую. Я попытался с помощью USART_transmit и с помощью функции чтения. Я не могу получить данные для моего кода Python. Вот мои коды.
#define F_CPU 16000000UL
#define BAUD 9600
#define MYUBRR F_CPU/16/BAUD-1
#include <avr/io.h>
#include <util/delay.h>
void USART_Init( unsigned int ubrr);
unsigned char USART_Read();
void USART_Transmit( unsigned char data );
int main(void){
USART_Init(MYUBRR);
initIRSensor();
int check = 0;
while(1){
if(PINC == 0b00000001){
USART_Transmit(1);
}
}
return 0;
}
void USART_Init( unsigned int ubrr)
{
/*Set baud rate */
/* UBRR0H contains the 4 most significant bits of the
baud rate. UBRR0L contains the 8 least significant
bits.*/
UBRR0H = (unsigned char)(ubrr>>8);
UBRR0L = (unsigned char)ubrr;
/*Enable transmitter */
UCSR0B = (1<<RXEN0) |(1<<TXEN0);
/* Set frame format: 8data */
UCSR0C = (1<<USBS0)|(3<<UCSZ00);
}
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR0A & (1<<UDRE0)) );
/* Put data into buffer, sends the data */
UDR0 = data;
}
unsigned char USART_Read()
{
/* Wait for empty transmit buffer */
while ( !( UCSR0A & (1<<RXC0)) );
/* Put data into buffer, sends the data */
//UDR0 = data;
return UDR0;
}
Я хочу, чтобы значение «1» было отправлено в мой код Python, чтобы я мог создавать графики. Это мой код Python. Я дал прирост всякий раз, когда лампа 1 высоко. У меня проблема в том, что функция чтения не работает должным образом. Последовательная связь работает нормально, потому что я использовал функцию ser.write, и она отлично работала. У меня проблема с функцией чтения. Надеюсь, что кто-нибудь может помочь:)
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import serial
import keyboard
bulb1=0
ser = serial.Serial('COM11')
print(ser.name)
while 1:
if(ser.read() == 1):
bulb1+=1