这个功能的结果是什么?

时间:2016-01-26 22:19:58

标签: 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;

//----------------------------------------------------------
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

我似乎无法弄明白。

1 个答案:

答案 0 :(得分:0)

根据引脚x的电压,将analogPort设置为-15到15(含)的值。 15表示5伏,-15表示0伏。

此值用于设置100( - (pow(2 * 15,2))+ 1000)和1000( - (pow(2 * 0,2))+ 1000)之间的延迟,因为2*x2*-x会产生相同的数字。

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

map函数将一个数字范围映射到另一个数字范围。可以使用map(temp, 0, 100, 32, 212)将摄氏温度转换为华氏温度。

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