这个功能的结果是什么?
#define __32MX250F128D__
#include <proc/p32mx250f128d.h>
#include <plib.h>
//----------------------------------------------------------
int number = 0;
int value = 0;
int x = 0;
int time = 0;
int analogPort = 5;
//----------------------------------------------------------
void setup() {
ANSELA = 1; // Set Ports A as analog
ANSELB = 0; // B,C as digital
ANSELC = 0;
TRISAbits.TRISA0 = 1;
TRISBbits.TRISB3 = 0;
TRISCbits.TRISC0 = 0;
TRISCbits.TRISC1 = 0;
TRISCbits.TRISC9 = 0;
TRISCbits.TRISC8 = 0;
TRISCbits.TRISC7 = 0;
TRISCbits.TRISC6 = 0;
TRISBbits.TRISB9 = 0;
TRISBbits.TRISB8 = 0;
TRISBbits.TRISB7 = 0;
}
//----------------------------------------------------------
void loop() {
value = analogRead(analogPort);
if(value > 500){
number++;
}
if(value < 524){
number--;
}
LATBbits.LATB3 = bitCheck(0,number);
LATCbits.LATC0 = bitCheck(1,number);
LATCbits.LATC1 = bitCheck(2,number);
LATCbits.LATC9 = bitCheck(3,number);
LATCbits.LATC8 = bitCheck(4,number);
LATCbits.LATC7 = bitCheck(5,number);
LATCbits.LATC6 = bitCheck(6,number);
LATBbits.LATB9 = bitCheck(7,number);
LATBbits.LATB8 = bitCheck(8,number);
LATBbits.LATB7 = bitCheck(9,number);
delay(150);
x = map(value, 0 ,1023, -15, 15);
time = (-(pow(2*x,2))+1000);
delay(time);
}
//----------------------------------------------------------
int bitCheck(int where, int value){
int result = (value >> where) & 1;
return result;
}
这是fubarino mini的代码,上面有10个LED,
如果value
高于500
,则数字会更高,
但是最后在value
函数中将哪个值分配给map
?
我似乎无法弄明白。
答案 0 :(得分:0)
根据引脚x
的电压,将analogPort
设置为-15到15(含)的值。 15表示5伏,-15表示0伏。
此值用于设置100( - (pow(2 * 15,2))+ 1000)和1000( - (pow(2 * 0,2))+ 1000)之间的延迟,因为2*x
和2*-x
会产生相同的数字。
换句话说,0伏将导致0.1秒延迟,2.5伏将导致1秒延迟,5伏将导致0.1秒延迟。
map
函数将一个数字范围映射到另一个数字范围。可以使用map(temp, 0, 100, 32, 212)
将摄氏温度转换为华氏温度。
analogRead()
函数返回0到1023之间的值,因此它被映射到-15到15的更有用的范围。