Я построил эскиз arduino, который пытается сделать пару разных длин окна и некоторые простые вычисления (среднее/дисперсия) по аналоговым значениям от пары датчиков. Раньше у меня был один и тот же код для 1 датчика, работающего по назначению, но приведенный ниже код был расширен с небольшим количеством циклов, чтобы все теперь работало для обоих датчиков.arduino ничего не печатает на серийный
Я просто ничего не могу получить для печати на серийный номер - даже два последовательных отпечатка, которые я установил и начал цикл, просто для отладки, но код компилируется и загружается без каких-либо ошибок или предупреждений.
Извиняюсь за включение всего эскиза, я не мог подумать, как разбить его, чтобы показать.
long int currentTime = 0;
long int stopTime[2] = {0,0};
long int shortWindowTime = 0;
int shortVal[2][40];
int reflexWindowStart = 0;
int reflexWindowTime = 0;
int reflexVal[2][500];
int mean[2] = {0,0};
unsigned int variance[2] = {0,0};
int lowVal[2] = {0,0};
int peakVal[2] = {0,0};
int lowIndex[2] = {0,0};
int peakIndex[2] = {0,0};
int stopIndex[2] = {0,0};
boolean stopped[2] = {false,false};
void setup(){
Serial.begin(9600);
Serial.println("wtf?");
for(int i=0;i<2;i++){
for(int j=0;j<40;j++){
shortVal[i][j] = 0;
}
for(int j=0;j<500;j++){
reflexVal[i][j] = 1023;
}
}
}
void loop() {
Serial.println("wtf?");
currentTime = micros();
if(currentTime - shortWindowTime > 500){
shortWindowTime = currentTime;
writeShortWindow();
meanVariance();
if(reflexWindowStart == 0){
reflexWindow();
}
reflexWindowStart++;
if(reflexWindowStart > 9){
reflexWindowStart = 0;
}
}
}
void writeShortWindow(){
for(int i=0;i<2;i++){
for(int j=39; j>0; j--){
shortVal[i][j] = shortVal[i][j-1];
}
int ground = analogRead(A5);
shortVal[0][0] = analogRead(A1);
analogRead(A5);
shortVal[i][0] = analogRead(A2);
}
}
void meanVariance(){
for(int i=0;i<2;i++){
for(int j=0; j<39; j++){
mean[i] = mean[i] + shortVal[i][j];
}
mean[i] = mean[i]/40;
for(int j=0; j<39; j++){
variance[i] = variance[i] + sq(mean[i] - shortVal[i][j]) ;
}
variance[i] = variance[i]/40;
}
}
void reflexWindow(){
for(int i=0;i<2;i++){
if(stopped[i] == true){
if((millis() - stopTime[i] > 20) && (peakVal[i] - shortVal[i][0] > 20) && (variance[i] <= 1)){
stopped[i] = false;
stopIndex[i] = 0;
Serial.println("................................NOTstopped");
}
}
}
for(int i=0;i<2;i++){
if(stopped[i] == false){
lowVal[i] = 1023;
peakVal[i] = 0;
for(int j=stopIndex[i]; j>0; j--){
reflexVal[i][j] = reflexVal[i][j-1];
if(reflexVal[i][j] < lowVal[i]){
lowVal[i] = reflexVal[i][j];
lowIndex[i] = j;
}
}
reflexVal[i][0] = shortVal[i][0];
for(int j=lowIndex[i]; j>=0; j--){
if(reflexVal[i][j] > peakVal[i]){
peakVal[i] = reflexVal[i][j];
}
}
}
}
for(int i=0;i<2;i++){
if(stopped[i] == false){
if(peakVal[i] - lowVal[i] >= 50){
Serial.print(i);
Serial.println("...................................stopped");
stopTime[i] = millis();
stopped[i] = true;
}
}
}
for(int i=0;i<2;i++){
if(stopIndex[i] < 499){
stopIndex[i]++;
}
}
Serial.print(shortVal[0][0]);
Serial.print(" ... ");
Serial.print(lowVal[0]);
Serial.print(" ... ");
Serial.print(peakVal[0]);
Serial.print(" ........ ");
Serial.print(shortVal[1][0]);
Serial.print(" ... ");
Serial.print(lowVal[1]);
Serial.print(" ... ");
Serial.println(peakVal[1]);
}
Вы попробовали сбросить Arduino? Кажется, я помню, что у меня была аналогичная проблема ... Последовательная консоль иногда отключается, но она не предупреждает вас ... Попробуйте повторно загрузить свою программу на плате, оставив кабель подключенным. (Я полагаю, вы подключены с помощью USB?) Я думаю, что это то, что я сделал с моим. – user3728501
Я пытался загрузить несколько раз через usb, и когда я запускаю любой другой эскиз, который, как я знаю, уже работает, он печатает и работает отлично. Привет, но – itsmrjack
Просто догадайтесь, но вы можете попробовать переместить (некоторые из) ваш код из настройки? Я не эксперт, но у меня есть догадка, что настройка - это просто, он может только инициализировать данные в памяти. Если вы ставите последовательные чтения и записи в loop(), это имеет значение? Я думаю о строках r/w, чтобы серийный номер в настройке вызывал проблемы. Это может быть бессмысленным, что я говорю. (Я думаю, что у нас была проблема с fpga на uni, и это было решение) – user3728501