如何给arduino快速写一组引脚的高低
int pin1 = 9;
int pin2 = 2;
int pin3 = 3;
int pin4 = 4;
int pin5 = 5;
int pin6 = 6;
int pin7 = 7;
int pin8 = 8;
bool isText = true;
int baseArray[] = {1,2,4,8,16,32,64,128};
int baseArrayCompare[] = {0,0,0,0,0,0,0,0};
bool dealWithData(int data)
{
initArray();
while(1)
{
if(data < 1)
{
compareData();
return true;
}
else
{
int a = 7;
while(data >= 1)
{
if(data >= baseArray[a])
{
baseArrayCompare[a] = baseArray[a];
data-=baseArray[a];
if(isText)
{
Serial.println("");
Serial.print("baseArrayCompare[a] : ");
Serial.println(baseArrayCompare[a]);
Serial.print("baseArray[a] : ");
Serial.println(baseArray[a]);
Serial.print("data : ");
Serial.println(data);
}
}
else
{
a--;
}
}
}
}
}
void initArray()
{
int number = 0;
while(number<8)
{
baseArrayCompare[number] = 0;
number++;
}
}
void compareData()
{
int number = 0;
while(number < 8)
{
if(baseArray[number] == baseArrayCompare[number])
{
writeState(number + 1 , HIGH);
if(isText)
{
Serial.println("");
Serial.print("baseArrayCompare[a] : ");
Serial.println(baseArrayCompare[number]);
Serial.print("baseArray[a] : ");
Serial.println(baseArray[number]);
Serial.println("HIGH");
}
}
else
{
writeState(number + 1 , LOW);
if(isText)
{
Serial.println("");
Serial.print("baseArrayCompare[a] : ");
Serial.println(baseArrayCompare[number]);
Serial.print("baseArray[a] : ");
Serial.println(baseArray[number]);
Serial.println("LOW");
}
}
number++;
}
}
void writeState(int pinNumber , int State)
{
switch(pinNumber)
{
case 1:
if(State == HIGH)
{
digitalWrite(pin1,HIGH);
}
else
{
digitalWrite(pin1,LOW);
}
break;
case 2:
if(State == HIGH)
{
digitalWrite(pin2,HIGH);
}
else
{
digitalWrite(pin2,LOW);
}
break;
case 3:
if(State == HIGH)
{
digitalWrite(pin3,HIGH);
}
else
{
digitalWrite(pin3,LOW);
}
break;
case 4:
if(State == HIGH)
{
digitalWrite(pin4,HIGH);
}
else
{
digitalWrite(pin4,LOW);
}
break;
case 5:
if(State == HIGH)
{
digitalWrite(pin5,HIGH);
}
else
{
digitalWrite(pin5,LOW);
}
break;
case 6:
if(State == HIGH)
{
digitalWrite(pin6,HIGH);
}
else
{
digitalWrite(pin6,LOW);
}
break;
case 7:
if(State == HIGH)
{
digitalWrite(pin7,HIGH);
}
else
{
digitalWrite(pin7,LOW);
}
break;
case 8:
if(State == HIGH)
{
digitalWrite(pin8,HIGH);
}
else
{
digitalWrite(pin8,LOW);
}
break;
}
}
void text()
{
// if(isText)
{
if(digitalRead(pin1) == HIGH)
{
Serial.println("pin1 : HIGH");
}
else
{
Serial.println("pin1 : LOW");
}
if(digitalRead(pin2) == HIGH)
{
Serial.println("pin2 : HIGH");
}
else
{
Serial.println("pin2 : LOW");
}
if(digitalRead(pin3) == HIGH)
{
Serial.println("pin3 : HIGH");
}
else
{
Serial.println("pin3 : LOW");
}
if(digitalRead(pin4) == HIGH)
{
Serial.println("pin4 : HIGH");
}
else
{
Serial.println("pin4 : LOW");
}
if(digitalRead(pin5) == HIGH)
{
Serial.println("pin5 : HIGH");
}
else
{
Serial.println("pin5 : LOW");
}
if(digitalRead(pin6) == HIGH)
{
Serial.println("pin6 : HIGH");
}
else
{
Serial.println("pin6 : LOW");
}
if(digitalRead(pin7) == HIGH)
{
Serial.println("pin7 : HIGH");
}
else
{
Serial.println("pin7 : LOW");
}
if(digitalRead(pin8) == HIGH)
{
Serial.println("pin8 : HIGH");
}
else
{
Serial.println("pin8 : LOW");
}
Serial.println("");
}
}
void setup() {
// put your setup code here, to run once:
pinMode(pin1,OUTPUT);
pinMode(pin2,OUTPUT);
pinMode(pin3,OUTPUT);
pinMode(pin4,OUTPUT);
pinMode(pin5,OUTPUT);
pinMode(pin6,OUTPUT);
pinMode(pin7,OUTPUT);
pinMode(pin8,OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("State:");
Serial.println("State:");
int textInt = 0;
isText = true
//不显示其他内容isText=false
while(textInt < 1000)
{
Serial.println(textInt);
dealWithData(textInt);
text();
textInt++;
}
while(1);
}