再次需要你的帮助:我正在做这个时间主从使用SPI通信,在代码中没有错误,当我模拟代码,但LED不会打开。
假设的结果是,当我按下主板上的按钮时,从板上的LED将亮起。
主代码:
// Master Board
#include <SPI.h>
#define button1 4
#define SS 10
int buttonvalue;
int x;
void setup(void) {
Serial.begin(115200); //set baud rate to 115200 for usart
digitalWrite(SS, HIGH); // disable Slave Select
SPI.begin ();
SPI.setClockDivider(SPI_CLOCK_DIV8); //divide the clock by 8
}
void loop(void) {
digitalWrite(SS, LOW);
buttonvalue = digitalRead(button1);
if (buttonvalue == HIGH) {
x = 1;
} else {
x = 0;
}
digitalWrite(SS, HIGH);
delay(1000);
}从机代码:
// Slave Board
#include <SPI.h>
#define led1 2
volatile byte Slavereceived;
volatile boolean received;
int x;
void setup(void) {
Serial.begin(115200);
pinMode(2, OUTPUT);
pinMode(MISO,OUTPUT);
SPCR |= _BV(SPE);
received = false;
SPI.attachInterrupt();
}
ISR (SPI_STC_vect) {
Slavereceived = SPDR;
received = true;
}
void loop() {
if (received) {
if (Slavereceived == 1) {
digitalWrite(led1, HIGH);
} else {
digitalWrite(led1, LOW);
}
delay(1000);
}
}

发布于 2021-03-06 23:19:37
我也陷入了同样的情况,在tinkercad中没有对SPI库的支持,你可以在没有错误的情况下包含它,甚至可以使用它,但是任何有用的命令都会让代码停留在那个命令对不起,但是如果对于tinkercad论坛,你没有太多可以做的link,其中一个人说SPI库和另外两个不受支持。
https://stackoverflow.com/questions/65298229
复制相似问题