Tellisin uue mootori ära, seekord 55T HPI, eelmine oli 15T HPI.

Selle mootoriga enam sõõrikuid ei tee, kuid see ei olegi eesmärk.
Code: Select all
#include <NewPing.h>
#define SONAR_NUM 2
#define MAX_DISTANCE 250
#define PING_INTERVAL 30
unsigned long pingTimer[SONAR_NUM];
uint8_t currentSensor = 0;
NewPing sonar[SONAR_NUM] = { // trigger pin, echo pin, max distance
NewPing(5, 6, MAX_DISTANCE),
NewPing(7, 8, MAX_DISTANCE)
};
int pwmPins[SONAR_NUM] = {
10, 11 };
//int a;
void setup()
{
//Serial.begin(19200);
pingTimer[0] = millis() + 75;
for (uint8_t i = 1; i < SONAR_NUM; i++)
pingTimer[i] = pingTimer[i - 1] + PING_INTERVAL;
}
void loop()
{
for (uint8_t i = 0; i < SONAR_NUM; i++) {
if (millis() >= pingTimer[i]) {
pingTimer[i] += PING_INTERVAL * SONAR_NUM;
sonar[currentSensor].timer_stop();
currentSensor = i;
sonar[currentSensor].ping_timer(echoCheck);
}
}
// Other code that *DOESN'T* analyze ping results can go here.
}
void echoCheck()
{
if (sonar[currentSensor].check_timer())
pingResult(currentSensor, sonar[currentSensor].ping_result / US_ROUNDTRIP_CM);
}
void pingResult(uint8_t sensor, int cm)
{
int a = map(cm, 0, MAX_DISTANCE, 0, 255);
if (a > 100)
a = 100;
if (a <= 5)
a = 0;
analogWrite(pwmPins[sensor], a );
/*
Serial.print("Andur ");
Serial.print(sensor); // print sensor number accessed
Serial.print(" = "); // = märk
// see prindib reavahetuse ka lõppu, väljund hüppab järgmisele reale
Serial.print(a); // sensor distance value
// see prindib reavahetuse ka lõppu, väljund hüppab järgmisele reale
Serial.println(" cm "); // cm
*/
}