DO高低电平输出接口
#define SENSOR 2
int KEY_NUM = 0;
int count = 0;
int state = 0;
void setup()
{
pinMode(SENSOR,INPUT);
Serial.begin(9600); // setup serial
}
void loop()
{
scanSensor();
if(KEY_NUM == 1)
{
KEY_NUM = 0;
Serial.println("press!");
Serial.print("count =");
Serial.println(count);
count++;
if(state == 2)
state = 0;
}
}
void scanSensor()
{
if(digitalRead(SENSOR) == LOW)
{
delay(10);
if(digitalRead(SENSOR) == LOW)
{
while(digitalRead(SENSOR) == LOW);
KEY_NUM = 1;
}
}
}
AO模拟量输出接口
#include <Arduino.h>
#define DEBUGSerial Serial
int sensorPin = A0;
#define PRESS_MIN 20
#define PRESS_MAX 6000
#define VOLTAGE_MIN 100
#define VOLTAGE_MAX 3300
void setup()
{
DEBUGSerial.begin(9600); // setup serial
Serial.println("setup end!");
}
void loop()
{
long Fdata = getPressValue(sensorPin);
DEBUGSerial.print("F = ");
DEBUGSerial.print(Fdata);
DEBUGSerial.println(" g,");
delay(300);
}
long getPressValue(int pin)
{
long PRESS_AO = 0;
int VOLTAGE_AO = 0;
int value = analogRead(pin);
DEBUGSerial.print("AD = ");
DEBUGSerial.print(value);
DEBUGSerial.print(" ,");
VOLTAGE_AO = map(value, 0, 1023, 0, 5000);
DEBUGSerial.print("V = ");
DEBUGSerial.print(VOLTAGE_AO);
DEBUGSerial.print(" mv,");
if(VOLTAGE_AO < VOLTAGE_MIN)
{
PRESS_AO = 0;
}
else if(VOLTAGE_AO > VOLTAGE_MAX)
{
PRESS_AO = PRESS_MAX;
}
else
{
PRESS_AO = map(VOLTAGE_AO, VOLTAGE_MIN, VOLTAGE_MAX, PRESS_MIN, PRESS_MAX);
}
return PRESS_AO;
}
验证结果