gpt4 book ai didi

python - 使用 C 语言的 Arduino 不接收 Python 输入

转载 作者:行者123 更新时间:2023-11-30 16:25:54 31 4
gpt4 key购买 nike

所以,我有一个学校项目,我们必须向 Arduino Uno 发送命令,当它收到命令时,它将从传感器发回数据。现在我已经让它工作到了如果我通过腻子发送命令它就会使用react的部分。但问题是:当我通过 Python 发送命令时,它不会执行任何操作。说清楚;我可以使用 Python 接收传感器的输出,但随后我有一个 C 程序不断向我推送数据。

这是我的 Python 代码:

import serial,time
ComPort = serial.Serial('COM3')
ComPort.baudrate = 19200
ComPort.bytesize = 8
ComPort.parity = 'N'
ComPort.stopbits = 1
data = "4"
data = data.encode("utf-8")
time.sleep(1.6)
ComPort.write(data)
out = " "
i = 0
while i < 1:
while ComPort.inWaiting() > 0:
out +=ComPort.read(1).decode()
i = i + 1
ComPort.close()

这是我的 C 代码;我遗漏了一些部件,因为这与传感器有关,传感器工作正常

#define F_CPU 16E6
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdlib.h>

#define UBBRVAL 51
void uart_init() {
// set the baud rate
UBRR0H = 19200;
UBRR0L = UBBRVAL;
// disable U2X mode
UCSR0A = 0;
// enable transmitter and receiver
UCSR0B = _BV(TXEN0)|_BV(RXEN0);
// set frame format : asynchronous, 8 data bits, 1 stop bit, no parity
UCSR0C = _BV(UCSZ01) | _BV(UCSZ00);
}

void UART_Putstring(char* eenstring)
{
while(*eenstring != 0X00)
{
transmit(*eenstring);
eenstring++;
}
}

unsigned char receive( void )
{
/* Wait for data to be received */
while ( !(UCSR0A & (1<<RXC0)) );
/* Get and return received data from buffer */
return UDR0;
}
void transmit(uint8_t data)
{
// wait for an empty transmit buffer
// UDRE is set when transmit buffer is empty
loop_until_bit_is_set(UCSR0A, UDRE0);
// send the data
UDR0 = data;
}

int main(void)
{
char tot_string[6];
uint8_t tijdelijk;
float tijdelijk_float;
char input;

DDRD |= 1<<5; // Setup HC-SR04 Trigger as an output
DDRD &= ~(1<<4); // Setup HC-SR04 Echo a an input
_delay_ms(50);
uart_init();

while(1)
{
input = receive();
if(input==0x34)
{
// This is converting sensor Data
tijdelijk = hcsr04();
tijdelijk_float = (float)(tijdelijk) * 40;
tijdelijk_float = tijdelijk_float/58;
dtostrf(tijdelijk_float, 2, 2, tot_string);
UART_Putstring(tot_string);
}
}
}

最佳答案

所以我找到了答案,非常简单。只需在 C: 中执行此操作:

if(input() == '4')
{
tijdelijk = hcsr04();
tijdelijk_float = (float)(tijdelijk) * 40;
tijdelijk_float = tijdelijk_float/58;
dtostrf(tijdelijk_float, 2, 2, tot_string);
UART_Putstring(tot_string);
}

关于python - 使用 C 语言的 Arduino 不接收 Python 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53231797/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com