- Код ниже является кодом Arduino IDE,
- хорошо работает на микроплате Arduino-uno и Arduino-pro.
- Это посылает значение (буфер размером 32) в 'C # Serial Communication Program' от Arduino.
- Но когда я заменяю Arduino на Bluno Nano (DFR0296) и запускаю его, значение не может быть передано в программу C #. (Номер пин-кода проверен правильно)
- Я ошибаюсь в коде Arduino или мне следует исправить его в коде C #?
sketch_dec05a.ino
int En0 = 7; // Low enabled
int En1 = 6; // Low enabled
int S0 = 5;
int S1 = 4;
int S2 = 3;
int S3 = 2;
int SIG_pin = A7;
typedef union {
uint16_t values[32];
uint8_t buffer[70];
} xData;
xData data;
void setup() {
Serial.begin(115200);
pinMode(En0, OUTPUT);
pinMode(En1, OUTPUT);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
}
void loop() {
while(!Serial.available()) ;
Serial.read();
for(int i = 0 ; i < 32 ; i++){
data.values[i] = readMux(i);
}
Serial.write(data.buffer, 64);
}
int readMux(int channel){
int controlPin[] = {S0,S1,S2,S3,En0,En1};
int muxChannel[32][6]={
{0,0,0,0,0,1}, //channel 0
{0,0,0,1,0,1}, //channel 1
{0,0,1,0,0,1}, //channel 2
{0,0,1,1,0,1}, //channel 3
{0,1,0,0,0,1}, //channel 4
{0,1,0,1,0,1}, //channel 5
{0,1,1,0,0,1}, //channel 6
{0,1,1,1,0,1}, //channel 7
{1,0,0,0,0,1}, //channel 8
{1,0,0,1,0,1}, //channel 9
{1,0,1,0,0,1}, //channel 10
{1,0,1,1,0,1}, //channel 11
{1,1,0,0,0,1}, //channel 12
{1,1,0,1,0,1}, //channel 13
{1,1,1,0,0,1}, //channel 14
{1,1,1,1,0,1}, //channel 15
{0,0,0,0,1,0}, //channel 16
{0,0,0,1,1,0}, //channel 17
{0,0,1,0,1,0}, //channel 18
{0,0,1,1,1,0}, //channel 19
{0,1,0,0,1,0}, //channel 20
{0,1,0,1,1,0}, //channel 21
{0,1,1,0,1,0}, //channel 22
{0,1,1,1,1,0}, //channel 23
{1,0,0,0,1,0}, //channel 24
{1,0,0,1,1,0}, //channel 25
{1,0,1,0,1,0}, //channel 26
{1,0,1,1,1,0}, //channel 27
{1,1,0,0,1,0}, //channel 28
{1,1,0,1,1,0}, //channel 29
{1,1,1,0,1,0}, //channel 30
{1,1,1,1,1,0} //channel 31
};
//loop through the 6 sig
for(int i = 0; i < 6; i ++){
digitalWrite(controlPin[i], muxChannel[channel][i]);
}
//read the value at the SIG pin
int val = analogRead(SIG_pin);
//return the value
return val;
}