bagaimana mengubah kode berikut menjadi satu menggunakan manipulasi port langsung
Aug 19 2020
Berikut adalah program untuk memindai keyboard untuk transfer MIDI. Saat ini kodenya berfungsi dengan baik, tetapi bisa lebih cepat. Saya perlu tahu bagaimana menggunakan manipulasi port langsung di dalam for loop.
boolean keypressed[6][6]; //for storing key states
int midinote[6][6] ={ 60 ,61 ,62 ,63 ,64 ,65
,66 ,67 ,68 ,69 ,70 ,71
,72 ,73 ,74 ,75 ,76 ,77
,78 ,79 ,80 ,81 ,82 ,83
,84 ,85 ,86 ,87 ,88 ,89
,90 ,91 ,92 ,93 ,94 ,95 }; //code for various midi notes C3 to C6
void setup() {
Serial.begin(38400);
for(int i=0; i<6; i++){
pinMode(i+2,OUTPUT);
digitalWrite(i+8,HIGH);
}
for(int i=0; i<6; i++){
pinMode(i+8,INPUT);
digitalWrite(i+8,HIGH);
}
for(int i=0; i<6; i++){
for(int j=0; j<6; j++){
keypressed[i][j] = false;
}
}
}
void loop() {
for(int i=0; i<6; i++){
digitalWrite(i+2, LOW);
for(int j =0; j<6; j++){
if ((digitalRead(j+8) == LOW) && !keypressed[i][j]){
Serial.write(0x91);
Serial.write(midinote[i][j]);
Serial.write(127);
keypressed[i][j] = true;
}
if ((digitalRead(j+8) == HIGH) && keypressed[i][j]){
Serial.write(0x91);
Serial.write(midinote[i][j]);
Serial.write(0);
keypressed[i][j] =false;
}
}
digitalWrite(i+2, HIGH);
}
}
Jawaban
1 SaeedMirshams Aug 19 2020 at 18:27
Lebih baik menggunakan interupsi daripada menyatukan pin. tetapi ini terkait dengan pengontrol arduino Anda. apa yang Anda pengontrol inti Arduino? jika Anda dapat memilih Saya lebih suka "Nano 33 IoT" yang memiliki 9 pin (2, 3, 9, 10, 11, 13, 15, A5, A7) tersedia untuk interupsi. halaman ini mungkin bisa digunakan:https://playground.arduino.cc/Main/PinChangeInterrupt/
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'