C 这个功能的结果是什么?

C 这个功能的结果是什么?,c,arduino,C,Arduino,这个功能的结果是什么 #define __32MX250F128D__ #include <proc/p32mx250f128d.h> #include <plib.h> //---------------------------------------------------------- int number = 0; int value = 0; int x = 0; int time = 0; int analogPort = 5; //-----------

这个功能的结果是什么

#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;
}
#定义uuu 32MX250F128D__
#包括
#包括
//----------------------------------------------------------
整数=0;
int值=0;
int x=0;
整数时间=0;
int模拟端口=5;
//----------------------------------------------------------
无效设置(){
ANSELA=1;//将端口A设置为模拟端口
ANSELB=0;//B,C为数字
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循环(){
值=模拟读取(模拟端口);
如果(值>500){
数字++;
}
如果(值<524){
数字--;
}
LATBbits.LATB3=位检查(0,数字);
LATCbits.LATC0=位检查(1,数字);
LATCbits.LATC1=位检查(2,数字);
LATCbits.LATC9=位检查(3,数字);
LATCbits.LATC8=位检查(4,数字);
LATCbits.LATC7=位检查(5,数字);
LATCbits.LATC6=位检查(6,数字);
LATBbits.LATB9=位检查(7,数字);
LATBbits.LATB8=位检查(8,数字);
LATBbits.LATB7=位检查(9,数字);
延迟(150);
x=映射(值,01023,-15,15);
时间=((功率(2*x,2))+1000);
延迟(时间);
}
//----------------------------------------------------------
int位检查(int-where,int-value){
int result=(值>>其中)&1;
返回结果;
}
这是fubarino mini的代码,上面有10个LED, 如果
高于
500
则该数字将更高, 但是在最后的
map
函数中,哪个值被分配给
value


我似乎无法理解。

这将根据引脚
模拟端口的电压将
x
设置为-15到15(包括-15)之间的值。15表示5伏,-15表示0伏

由于
2*x
2*-x
的平方产生相同的数字,因此该值用于设置100(-(功率(2*15,2))+1000)和1000(-(功率(2*0,2))+1000)之间的延迟

换句话说,0伏将导致0.1秒延迟,2.5伏将导致1秒延迟,5伏将导致0.1秒延迟

map
函数将一个数值范围映射到另一个数值范围。你可以用
map(temp,010032212)
将摄氏温度转换为华氏温度


analogRead()
函数返回一个从0到1023的值,因此它被映射到更有用的-15到15的范围。

请您为您的问题提供更多的上下文。通过
arduino
标记可以很明显地看出函数的来源。是的,对不起,我清楚地发布了我的整个codeClearly,最后一个函数是位检查。另一个函数是一个“循环”,它在名称中这样说!在x=map(值,0,1023,-15,15)中分配给值的是什么;你是怎么想到-2600的?哎呀。我想我算错了。编辑。((pow(2*15,2))+1000=((pow(30,2))+1000=((900)+1000)=1000-900=100。我想是的,谢谢你的回答!,但是0,1023在函数中做了什么,仍然不明白。谢谢你的解释!