nodo-domotica.nl

Gebruik van Tone ipv Beep voor Sound

Hier alles over de Software in de Nodo

Gebruik van Tone ipv Beep voor Sound

Berichtdoor hadriaanse » 20 maart 2012, 23:28

Beste Nodo-bouwers,

Het viel me op in de code dat er gekozen is voor het gebruik van het Beep commando om geluid te genereren voor het Sound commando. Als ik het goed begrepen heb staat de Nodo stil tijdens een beep. Voor korte signalen geen probleem.
Nu wil ik graag een alamr functie implementeren, waarbij de Nodo gedurende langere tijd geluid produceert.
Hebben jullie ooit overwogen om de Tone-library te gebruiken ?? (zie http://code.google.com/p/arduino-tone/)
Deze lijkt functies te leveren om geluid aan te zetten, te stoppen, etc. Ik overweeg om die te implementeren in de Nodo code. Maar als jullie dit al overwogen hebben en goede reden hebben om het niet te doen, dan hoor ik dat graag.
Als ik het implementeer en het is succesvol, dan stel ik uiteraard de code aan jullie beschikbaar.

Ik hoor graag jullie gedachten hierover

Vriendelijke groet,
Hans
hadriaanse
 
Berichten: 14
Geregistreerd: 17 jan 2012, 14:47

Re: Gebruik van Tone ipv Beep voor Sound

Berichtdoor hadriaanse » 24 maart 2012, 01:06

Beste Nodo-ontwikkelaars,

Zoals gemeld had ik graag een alarmfunctie in de Nodo. Ik heb wat in de Nodo software zitten knutselen en dit is er uitgekomen:
Het commando Alarm is toegevoegd.
Par1 geeft het aan/uit interval. 0 zet het alarm uit naarmate par 1 hoger is wordt het interval langer. Par 1 kan tussen 0 en 20 worden gekozen.
Par 2 geeft de toonhoogte. Waarde tussen 1 en 100 wat overeen komt met 100 tot 10.000 Hz.

Het lijkt goed te werken. Wellicht is het iets voor jullie om het op te nemen in de Nodo code.

Hieronder de code aanpassingen (is niet veel).

In Nodo.ino heb ik het volgende toegevoegd/aangepast:
Code: Selecteer alles
prog_char PROGMEM Cmd_079[]="Alarm";

...
Code: Selecteer alles
#define CMD_ALARM                       79

...
Code: Selecteer alles
unsigned long AlarmTimer;                                   // Tijd dat het alarm aan uit gaat.
unsigned long AlarmTime;                                    // Actuele tijd voor alarm aan/uit
unsigned long AlarmTone;                                    // Toonhoogte alarm

In setup():
Code: Selecteer alles
AlarmTimer = 0;
  AlarmTime = 0;


In loop 2 van de niet tijdkritische processen (met LoopIntervalTimer_2<millis()) heb ik een case toegevoegd aan switch(Slice_2++):
Code: Selecteer alles
case 5:
          {
            if (AlarmTimer != 0L)
              {
              if (AlarmTime < millis()) // Als de timer is afgelopen
                {
                AlarmTime = millis() + AlarmTimer*100;
                tone(PIN_SPEAKER,AlarmTone,350 + AlarmTimer*50);
                }
            }
            break; 
          }


Verder heb ik in Commands.ino toegevoegd:
In de functie byte CommandError(unsigned long Content) onder de eerste switch(Command):
Code: Selecteer alles
case CMD_ALARM:


En in de functie ExecuteCommand onder switch(Command):
Code: Selecteer alles
case CMD_ALARM:
        if (Par1 > 20) Par1 = 20;
        AlarmTimer = Par1;
        if (Par2 == 0) Par2 = 5;
        if (Par2 > 100) Par2 = 100;
        AlarmTone = Par2*100;
        break;
hadriaanse
 
Berichten: 14
Geregistreerd: 17 jan 2012, 14:47


Keer terug naar Nodo Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers. en 1 gast

cron