help
- Войдите на сайт для отправки комментариев
Сб, 29/03/2014 - 18:06
проблема... взял код у этого человека https://www.youtube.com/watch?v=LW8UZjsuBS0.... мне надо было добавить 3 кнопки для управления( 1-я для мигания светодиода при ударе(чтобы красиво было), 2-я для вкл выкл чквствительности, 3-я для регулирования чувствительности). проблема в том что когда в loop вставил функцию Keys(), то датчики перестали работать.... кнопки при этом работают(загорается светодиод на 13пине). собственно вопрос почему??? непонимаю((
unsigned char PadNote[8] = {47,18,32,38,43,13,45,17}; unsigned char status; int PadCutOff[8] = {100,100,100,100,100,100,100,100}; int MaxPlayTime[8] = {25,25,25,25,25,25,25,25}; #define midichannel 0; boolean activePad[8] = {0,0,0,0,0,0,0,0}; int PinPlayTime[8] = {0,0,0,0,0,0,0,0}; boolean VelocityFlag = true; int pin = 0; int hitavg = 0; int pad = 0; int r0 = 0; int r1 = 0; int r2 = 0; int count = 0; int multiplex1[8]; //___LED_____________ #define ledPin 13 #define led 2 boolean ledOn = LOW; //___________________ //__________KEY______ boolean lastBut[3] ={1,1,1}; boolean curBut[3] ={1,1,1}; int kpin; int vel; int f=8; //___________________ //******************************************************************************************************************* // Setup //******************************************************************************************************************* void setup() { pinMode(ledPin, OUTPUT); pinMode(led, OUTPUT); pinMode(4, INPUT); pinMode(5, INPUT); pinMode(6, INPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); Serial.begin(115200); // connect to the serial port 115200 } //******************************************************************************************************************* // Main Program //******************************************************************************************************************* boolean deb(boolean last) { boolean cur; cur = digitalRead(kpin); if (last != cur) { delay(20); cur = digitalRead(kpin); } return cur; } void Keys(){ digitalWrite(led, LOW); for ( kpin=4 ; kpin<7; kpin++) { curBut[kpin] = deb(lastBut[kpin]); if (lastBut[kpin] == LOW && curBut[kpin] == HIGH) { digitalWrite(ledPin, HIGH); delay(10); digitalWrite(ledPin, LOW); if (curBut[4] == HIGH) {ledOn =!ledOn;} if (curBut[5] == HIGH){VelocityFlag = !VelocityFlag;} if (curBut[6] == HIGH){f=f++; if (f>8) f =5;} } lastBut[kpin] = curBut[kpin]; if (ledOn == true) { for(int i=0; i <= 7; i++) { vel =multiplex1[i]; if (vel > PadCutOff[i]){ digitalWrite(led, HIGH); } } } } } void loop() { readSensors(0); checkSensors(0); Keys(); } void readSensors (int analogPin) { for(count=0; count <= 7; count++) { r2 = bitRead(count,0); r1 = bitRead(count,1); r0 = bitRead(count,2); digitalWrite(7, r0); digitalWrite(8, r1); digitalWrite(9, r2); multiplex1[count] = analogRead(0); } } void checkSensors (int analogPin) { for(int pin=0; pin <=7; pin++) { hitavg = multiplex1[pin]; pad=pin; if((hitavg > PadCutOff[pad])) { if((activePad[pad] == false)) { if(VelocityFlag == true) { hitavg = (hitavg / f) -1; } else { hitavg = 127; } MIDI_TX(144,PadNote[pad],hitavg); PinPlayTime[pad] = 0; activePad[pad] = true; } else { PinPlayTime[pad] = PinPlayTime[pad] + 1; } } else if((activePad[pad] == true)) { PinPlayTime[pad] = PinPlayTime[pad] + 1; if(PinPlayTime[pad] > MaxPlayTime[pad]) { activePad[pad] = false; MIDI_TX(128,PadNote[pad],0); } } } } void MIDI_TX(unsigned char MESSAGE, unsigned char PITCH, unsigned char VELOCITY) { status = MESSAGE + midichannel; Serial.write(status); Serial.write(PITCH); Serial.write(VELOCITY); }
Уберите функцию, если с ней не работает: решение же очевидное...
эт понятно))) но мне хотелось бы поставить кнопки)
эт понятно))) но мне хотелось бы поставить кнопки)
Ну так Вы определитесь с хотелками, глядишь, и название темы нормальное появится... :) Скорее всего - где-то скобки не закрыты или переменные затираете, но в этом, честно говоря, не хочется разбираться. Комментируйте циклы функциональными частями и смотрите - когда оно заработает...