如何编写代码使 LED 按以下顺序闪烁?
How to write code to make the LED’s flash in the following sequence?
如何编写这样的代码?小数点后四位是什么意思?
为此,我们不得不在代码中添加延迟
led_Pin_1 1 0 0 0
led_Pin_2 0 1 0 0
led_Pin_3 0 0 1 0
led_Pin_4 0 0 0 1
我的代码,它正在运行。但是我需要把这段代码转换成上面的序列?
int led_Pin_1 = 11;
int led_Pin_2 = 10;
int led_Pin_3 = 9;
int led_Pin_4 = 8;
void setup() {
pinMode(led_Pin_1, OUTPUT);
pinMode(led_Pin_2, OUTPUT);
pinMode(led_Pin_3, OUTPUT);
pinMode(led_Pin_4, OUTPUT);
}
void loop() {
digitalWrite(led_Pin_1, HIGH);
delay(200);
digitalWrite(led_Pin_2, HIGH);
delay(200);
digitalWrite(led_Pin_3, HIGH);
delay(200);
digitalWrite(led_Pin_4, HIGH);
delay(200);
digitalWrite(led_Pin_1, LOW);
delay(300);
digitalWrite(led_Pin_2, LOW);
delay(300);
digitalWrite(led_Pin_3, LOW);
delay(300);
digitalWrite(led_Pin_4, LOW);
delay(300);
}
如果变成这样,那是什么意思
LED1 1 0 0 0
LED2 1 1 0 0
LED3 1 1 1 0
LED4 1 1 1 1
我推荐你使用Array。
首先,您需要为 LED 创建一个阵列。然后创建一个函数来为该数组设置正确的值。之后,您可以简单地在循环内分配所需的值。
数组的一个好用之处在于您可以轻松更改大小而无需修改所有代码。
// Number of LEDs
#define ARRAY_SIZE 4
//Pin definitions
#define LED_PIN_1 11
#define LED_PIN_2 10
#define LED_PIN_3 9
#define LED_PIN_4 8
// Array that holds led pin numbers
const int led_pins[ARRAY_SIZE] = {LED_PIN_4, LED_PIN_3, LED_PIN_2, LED_PIN_1};
// a temp array to hold led values
int led_array_value[ARRAY_SIZE] = {0};
void display(int *input)
{
for (int i = 0; i < ARRAY_SIZE; i++)
{
digitalWrite(led_pins[i], input[i]);
}
}
void setup()
{
for (int i = 0; i < ARRAY_SIZE; i++)
{
pinMode(led_pins[i], OUTPUT);
}
}
void loop()
{
for (int i = 0; i < ARRAY_SIZE; i++)
{
// reset all leds to 0
memset(led_array_value, 0, sizeof(led_array_value));
// turn on current led
led_array_value[i] = 1;
display(led_array_value);
delay(500);
}
}
如何编写这样的代码?小数点后四位是什么意思? 为此,我们不得不在代码中添加延迟
led_Pin_1 1 0 0 0
led_Pin_2 0 1 0 0
led_Pin_3 0 0 1 0
led_Pin_4 0 0 0 1
我的代码,它正在运行。但是我需要把这段代码转换成上面的序列?
int led_Pin_1 = 11;
int led_Pin_2 = 10;
int led_Pin_3 = 9;
int led_Pin_4 = 8;
void setup() {
pinMode(led_Pin_1, OUTPUT);
pinMode(led_Pin_2, OUTPUT);
pinMode(led_Pin_3, OUTPUT);
pinMode(led_Pin_4, OUTPUT);
}
void loop() {
digitalWrite(led_Pin_1, HIGH);
delay(200);
digitalWrite(led_Pin_2, HIGH);
delay(200);
digitalWrite(led_Pin_3, HIGH);
delay(200);
digitalWrite(led_Pin_4, HIGH);
delay(200);
digitalWrite(led_Pin_1, LOW);
delay(300);
digitalWrite(led_Pin_2, LOW);
delay(300);
digitalWrite(led_Pin_3, LOW);
delay(300);
digitalWrite(led_Pin_4, LOW);
delay(300);
}
如果变成这样,那是什么意思
LED1 1 0 0 0
LED2 1 1 0 0
LED3 1 1 1 0
LED4 1 1 1 1
我推荐你使用Array。
首先,您需要为 LED 创建一个阵列。然后创建一个函数来为该数组设置正确的值。之后,您可以简单地在循环内分配所需的值。
数组的一个好用之处在于您可以轻松更改大小而无需修改所有代码。
// Number of LEDs
#define ARRAY_SIZE 4
//Pin definitions
#define LED_PIN_1 11
#define LED_PIN_2 10
#define LED_PIN_3 9
#define LED_PIN_4 8
// Array that holds led pin numbers
const int led_pins[ARRAY_SIZE] = {LED_PIN_4, LED_PIN_3, LED_PIN_2, LED_PIN_1};
// a temp array to hold led values
int led_array_value[ARRAY_SIZE] = {0};
void display(int *input)
{
for (int i = 0; i < ARRAY_SIZE; i++)
{
digitalWrite(led_pins[i], input[i]);
}
}
void setup()
{
for (int i = 0; i < ARRAY_SIZE; i++)
{
pinMode(led_pins[i], OUTPUT);
}
}
void loop()
{
for (int i = 0; i < ARRAY_SIZE; i++)
{
// reset all leds to 0
memset(led_array_value, 0, sizeof(led_array_value));
// turn on current led
led_array_value[i] = 1;
display(led_array_value);
delay(500);
}
}