我正在编写程序,我有两个Arduino通过RX和TX引脚连接,当两个Arduino相互断开时,我想在屏幕上弹出一些东西。有没有办法在不使用(或尽可能少使用)延迟的情况下做到这一点?如果是这样,怎么样?
我已经尝试了很多东西而且没有任何我能想到的东西。一个工作,但我无法在屏幕上打印任何东西(一个是提供的代码)。
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
int i = 0;
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
int l = 0;
int p = 0;
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
int k = 1;
#define DUUR 3700 // 15 x 60 x 1000 milliseconden
uint32_t timer; // 32 bits timer
int fukk = 0;
int test = 0;
#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH 16
static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,
B00000001, B11000000,
B00000001, B11000000,
B00000011, B11100000,
B11110011, B11100000,
B11111110, B11111000,
B01111110, B11111111,
B00110011, B10011111,
B00011111, B11111100,
B00001101, B01110000,
B00011011, B10100000,
B00111111, B11100000,
B00111111, B11110000,
B01111100, B11110000,
B01110000, B01110000,
B00000000, B00110000
};
int incomingByte = 0;
int sad = 0;
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
delay(500);
display.clearDisplay();
}
void loop() {
Serial.println(p);
display.display();
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(17, 16);
display.print("Test");
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
}
for (int i = 0; i < 100; i++) {
p = i;
}
if (p == 99) {
if (incomingByte == 0) {
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print("No signal");
display.display();
}
}
incomingByte = 0;
}
答案 0 :(得分:-1)
我会回答第二个问题。你怎么能从1 arduino发送心跳到另一个这很容易做到这样说你的心跳是“... \ n”你设置一个字符串监听器来监听一个特定的短语所以从一个功能你会设置一个心跳和一个计时器,从第二个字符串监听器。
// first Arduino add function to the main loop of the first Arduino.
void send_Heartbeat() {
if (Serial.available() > 0) {
Serial.println("..."); //println sends"\n"
//wait 3 seconds dont use delay it's blocking but
//impliment a timer loop to count to 3 seconds.
}
}
//second Arduino
//global variable
int counter = 3500;
void loop()
{
if (Serial.available() > 0)
{
String s = Serial.readStringUntil( /n);
if (s == "...") {
// reset counter to 3500ms
// count down from 3500ms using a timer library
if (counter == 0) {
// print to LCD no signal
}
// do stuff
}
}
// do more stuff
}