Ошибка 'rotation' was not declared in this scope
- Войдите на сайт для отправки комментариев
Втр, 20/03/2018 - 16:52
Доброго времени суток, у меня така проблема, при проверке кода появляется ошибка: Davis_Wind_Speed_Direction.ino:32: error: 'rotation' was not declared in this scope
attachInterrupt(digitalPinToInterrupt(WindSensorPin), rotation, FALLING);
#include "TimerOne.h" // Timer Interrupt set to 2 second for read sensors #include <math.h> #define WindSensorPin (2) // The pin location of the anemometer sensor #define WindVanePin (A4) // The pin the wind vane sensor is connected to #define VaneOffset 0; // define the anemometer offset from magnetic north int VaneValue; // raw analog value from wind vane int Direction; // translated 0 - 360 direction int CalDirection; // converted value with offset applied int LastValue; // last direction value volatile bool IsSampleRequired; // this is set true every 2.5s. Get wind speed volatile unsigned int TimerCount; // used to determine 2.5sec timer count volatile unsigned long Rotations; // cup rotation counter used in interrupt routine volatile unsigned long ContactBounceTime; // Timer to avoid contact bounce in isr float WindSpeed; // speed miles per hour void setup() { LastValue = 0; IsSampleRequired = false; TimerCount = 0; Rotations = 0; // Set Rotations to 0 ready for calculations Serial.begin(9600); pinMode(WindSensorPin, INPUT); attachInterrupt(digitalPinToInterrupt(WindSensorPin), rotation, FALLING); Serial.println("Davis Anemometer Test"); Serial.println("Speed (MPH)\tKnots\tDirection\tStrength"); // Setup the timer interupt Timer1.initialize(500000);// Timer interrupt every 2.5 seconds Timer1.attachInterrupt(isr_timer); } void loop() { getWindDirection(); // Only update the display if change greater than 5 degrees. if (abs(CalDirection - LastValue) > 5) { LastValue = CalDirection; } if (IsSampleRequired) { // convert to mp/h using the formula V=P(2.25/T) // V = P(2.25/2.5) = P * 0.9 WindSpeed = Rotations * 0.9; Rotations = 0; // Reset count for next sample IsSampleRequired = false; Serial.print(WindSpeed); Serial.print("\t\t"); Serial.print(getKnots(WindSpeed)); Serial.print("\t"); Serial.print(CalDirection); getHeading(CalDirection); Serial.print("\t\t"); getWindStrength(WindSpeed); } } // isr handler for timer interrupt void isr_timer() { TimerCount++; if (TimerCount == 6) { IsSampleRequired = true; TimerCount = 0; } } // This is the function that the interrupt calls to increment the rotation count void isr_rotation() { if ((millis() - ContactBounceTime) > 15 ) { // debounce the switch contact. Rotations++; ContactBounceTime = millis(); } } // Convert MPH to Knots float getKnots(float speed) { return speed * 0.868976; } // Get Wind Direction void getWindDirection() { VaneValue = analogRead(WindVanePin); Direction = map(VaneValue, 0, 1023, 0, 359); CalDirection = Direction + VaneOffset; if (CalDirection > 360) CalDirection = CalDirection - 360; if (CalDirection < 0) CalDirection = CalDirection + 360; } // Converts compass direction to heading void getHeading(int direction) { if (direction < 22) Serial.print(" N"); else if (direction < 67) Serial.print(" NE"); else if (direction < 112) Serial.print(" E"); else if (direction < 157) Serial.print(" SE"); else if (direction < 212) Serial.print(" S"); else if (direction < 247) Serial.print(" SW"); else if (direction < 292) Serial.print(" W"); else if (direction < 337) Serial.print(" NW"); else Serial.print(" N"); } // converts wind speed to wind strength void getWindStrength(float speed) { if (speed < 2) Serial.println("Calm"); else if (speed >= 2 && speed < 4) Serial.println("Light Air"); else if (speed >= 4 && speed < 8) Serial.println("Light Breeze"); else if (speed >= 8 && speed < 13) Serial.println("Gentle Breeze"); else if (speed >= 13 && speed < 18) Serial.println("Moderate Breeze"); else if (speed >= 18 && speed < 25) Serial.println("Fresh Breeze"); else if (speed >= 25 && speed < 31) Serial.println("Strong Breeze"); else if (speed >= 31 && speed < 39) Serial.println("Near Gale"); else Serial.println("RUN"); }
и че? :) Компилятор прав. Покажите мне rotation в вашем скетче.
и че делать? я прост новичок, мне дали задания, а скетч скопировал на форуме http://cactus.io/hookups/weather/anemometer/davis/hookup-arduino-to-davis-anemometer-software
и че делать? я прост новичок, мне дали задания, а скетч скопировал на форуме http://cactus.io/hookups/weather/anemometer/davis/hookup-arduino-to-davis-anemometer-software
дали задание - выполняй. Сам. Списывать нехорошо.
я прост новичок, мне дали задания, а скетч скопировал на форуме http://cactus.io/hookups/weather/anemometer/davis/hookup-arduino-to-davis-anemometer-software
батарейки не подошли....
и че делать? я прост новичок, мне дали задания, а скетч скопировал на форуме http://cactus.io/hookups/weather/anemometer/davis/hookup-arduino-to-davis-anemometer-software
А что тут можно делать? Изучить матчасть и написать программу.
Или клянчить христа ради на том сайте, с которого тырили скетч. Авторы - народ отзывчивый, мож и подадут.
igor_sviridenko, тут даже по комментариям в коде понятно, что и на что исправить нужно. А если Вы ни строчки в скетче не понимаете, то ... выше Вам всё написали.
igor_sviridenko, тут даже по комментариям в коде понятно, что и на что исправить нужно. А если Вы ни строчки в скетче не понимаете, то ... выше Вам всё написали.
похоже, что автор скетча специально внес эту ошибку, чтоб отвадить копипастеров...
чтоб отвадить копипастеров...
Не всех, а только тупых.
и че делать? я прост новичок, мне дали задания, а скетч скопировал
отовитьсяЧто делать? Что делать? ... Готовиться в Красную Армию.
если ты в 39 строке вместо
Timer1.attachInterrupt(isr_timer);
напишешь
Timer1.attachInterrupt(timer);
он еще и на timer начнет ругаться :)
кстати ты не тот ли самый novichok ?