主页 > 技术方案 > ZDAUTO-MIO-Arduino 代码例程
int KEY_Scan(void);
const int analogInPin = A0; // 模拟量输入口为A0
const int analogOutPin = 3; // 模拟量输出口为PIN3
int KEY1 = 4; // KEY1引脚为PIN4
int KEY2 = 5; // KEY2引脚为PIN5
int LED = 6; // LED灯引脚为PIN6
int LED_State = 0; // LED灯状态
int sensorValue = 0; // 读入的模拟量值
int Value = 0; // 写出的模拟量值
int CNT=0;
void setup()
{
Serial.begin(9600); // 波特率设为9600
pinMode(KEY1, INPUT);
pinMode(KEY2, INPUT);
digitalWrite(KEY1, HIGH);
digitalWrite(KEY2, HIGH);
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH);
}
void loop()
{
int Key1_val = KEY_Scan();
switch (Key1_val)
{
case 1 : // KEY1
if (Value < 255) // 模拟量输出最大值为255
{
Value += 51;
digitalWrite(LED, LED_State);
LED_State = !LED_State; // LED状态取反
}
break;
case 2 : // KEY2
if (Value > 0) // 模拟量输出最小值为0
{
Value -= 51;
digitalWrite(LED, LED_State);
LED_State = !LED_State; // LED状态取反
}
break;
default: break;
}
if( ++CNT==25)
{
CNT=0;
analogWrite(analogOutPin, Value); // 输出模拟量到PIN3
sensorValue = analogRead(analogInPin); // 读取输入的模拟量
Serial.print("AO Output = " ); // 串口输出字符串
Serial.print(Value / 255.0 * 10.0);
Serial.print("\t AI Input = " );
Serial.println(sensorValue / 1023.0 * 5.0); // 串口输出变量后换行
}
delay(20);
}
int KEY_Scan(void)
{
static int key_up=1; // 按键按松开标志
if(key_up&&(digitalRead(KEY1)==LOW||digitalRead(KEY2)==LOW))
{
delay(10); // 去抖动
key_up=0;
if(digitalRead(KEY1)==LOW)
return 1;
else if(digitalRead(KEY2)==LOW)
return 2;
}
else if(digitalRead(KEY1)==HIGH&&digitalRead(KEY2)==HIGH)
key_up=1;
return 0; // 无按键按下
}
| 物料名称 | 单套用量 | 预估单价 | ||
|---|---|---|---|---|
| M5S-PO | 100 | ¥ 27.144000 | 询价 | |
| M5S-CX | 100 | ¥ 30.160000 | 询价 | |
| M5S-BO | 100 | ¥ 15.080000 | 询价 | |
| M5S-PX | 100 | ¥ 33.750200 | 询价 | |
| M5S-AO | 100 | ¥ 36.192000 | 询价 | |
| M5S-PI | 100 | ¥ 22.620000 | 询价 | |
| M5S-AI | 100 | ¥ 24.128000 | 询价 | |
| M5S-BI | 100 | ¥ 12.064000 | 询价 |
技术方案