sketch veranderen voor Arduino Audio Shield (Velleman)

Hi,

Ben net begonnen met Arduino… Nu ben ik bezig met een project waarbij een Audio Shield van Velleman gebruik. Ik heb de pushbutton vervangen voor een tilt sensor, zodat als de Arduino omgedraaid wordt, de soundfile wordt afgespeeld. Nu wil ik de sketch zo aanpassen dat wanneer de soundfile alles 1 keer heeft afgespeeld de chip automatisch erased wordt. Heeft iemand een idee hoe ik dit kan doen? Het is voor een project waar ik mee bezig ben op de kunstacademie.
alvast dank voor je antwoord…

Hoi ethor, en welkom.

Heb je het voorbeeld dat Velleman op hun site beschikbaar stelt al bekeken > Daar staat namelijk wel wat in.

Zo komt het volgende voorbij:

   chip.g_erase();

Aangezien er hier geen variabelen worden ingegeven, neem ik maar even aan dat dit betekent dat de hele ISD1700 chip dan gewist word. Er is ook een variant te vinden waar een gedeelte (een adres bereik) gewist word.

Nog wat meer tips: - Stel dezelfde vraag niet in verschillende sub forums. - Als je een vraag hebt over een product, zet er dan een linkje bij naar dat product; dan hoeft iemand die je wil helpen niet eerst uit te gaan zoeken waar je het eventueel over zou kunnen hebben. - Als je een vraag hebt over een code of sketch, plaats dan wat je al hebt, en doe dat tussen [code] [ /code] tags.

dank je voor je antwoord en tips…
Ja , ik heb de voorbeeldsketch van Velleman al en die heb ik al enigszins veranderd ( mbv tips van anderen). Maar het wil niet echt lukken… Dit is wat ik nu heb…

#include <ISD1700.h>

ISD1700 chip(10); // Initialize chipcorder with
                  // SS at Arduino's digital pin 10
int buttonPin = 10;
int tiltSensor = 10;

int apc=0;
int vol=0;  //volume 0=MAX, 7=min



int startAddr=0x10;
int endAddr  =0x2DF;
void setup()
{
  
  pinMode(tiltSensor, INPUT);
  apc = apc | vol;  //D0, D1, D2
  
  //apc = apc | 0x8;    //D3  comment to disable output monitor during record
  
  apc = apc | 0x50;    // D4& D6  select MIC REC
  //apc = apc | 0x00;      // D4& D6  select AnaIn REC
  //apc = apc | 0x10;    // D4& D6  select MIC + AnaIn REC
  
  apc = apc | 0x80;    // D7   AUX ON, comment enable AUD
  
  apc = apc | 0x100;     // D8   SPK OFF, comment enable SPK
  
  //apc = apc | 0x200;   // D9   Analog OUT OFF, comment enable Analog OUT
  
  //apc = apc | 0x400;   // D10  vAlert OFF, comment enable vAlert
  
  apc = apc | 0x800;     // D11 EOM ON, comment disable EOM
  
  
  
  Serial.begin(9600);
  Serial.println("Sketch is starting up");
}

void loop()
{
  char c;
  
  if(Serial.available())
  {
    /* Power Up */
    chip.pu();
    c = Serial.read();
    switch(c)
    {
       case 'A':
         Serial.println(chip.rd_apc(), BIN);
         break; 
      tiltSensor = digitalRead(buttonPin);
  if (digitalRead(tiltSensor) == HIGH);
  { 
    chip.set_play(startAddr,endAddr);
    delay(1000);
  }
  if (digitalRead(tiltSensor) == LOW);

  delay(10); // debounces switch
  {
    chip.set_erase(startAddr,endAddr);
  delay(500);
  }      

         
    }
    Serial.print("Status---> ");
    Serial.print(chip.CMD_ERR()? "CMD_ERR ": "OK ");
    Serial.print(chip.PU()? "PU ": "NO PU ");
    Serial.print(chip.RDY()? "RDY ": "Not_RDY ");
    Serial.print(chip.rd_status(), BIN);
    Serial.println();
    delay(1000);
  }
}

void mess(int num){
  Serial.print("num: ");
  Serial.println(num);
  startAddr=(0x50*num)+0x10;
  endAddr=(startAddr+0x50)-1;
  Serial.print("startAddr: ");
  Serial.print(startAddr, HEX);
  Serial.print(" - endAddr: ");
  Serial.println(endAddr, HEX);
  
}

Die tips van anderen zullen dan waarschijnlijk in het Engelstalige deel staan waar je je vraag ook gesteld hebt. Als je net begonnen bent met Arduino, hoe lang ben je dan al bezig met programmeren, is dat net zo lang ?

Voor programmeren moet je zorgen dat je heel duidelijk bent met wat je wil, want een controller (en ook de dikste processor die je kunt vinden) kan niet raden naar wat je wil bereiken. Datzelfde geldt hier voor het forum.

Maar het wil niet echt lukken..

Daar kan men erg weinig mee, want je vertelt niet wat je veranderd hebt, wat je van die verandering verwachtte en wat het resultaat is dat je verkregen hebt.

Ik zie dat je in setup twee keer een int aanmaakt die verwijst naar pin 10 (zul je vast een heel goede reden voor hebben). Ik zie een functie genaamd mess, die er wel is maar nooit aangeroepen word.

Ik zie dat je kijkt of er iemand op het toetsenbord van een aangesloten pc op shift-a drukt, dan word er iets gedaan via de seriële verbinding. Daarna kijk je wat er gebeurt met pin 10, en de digitale waarde (een 0 of een 1 dus) die je uit pin 10 haalt, stop je in de de variabele die je in setup ook laat wijzen naar pin 10. Dan ga je weer uitlezen wat er met je seriële poort gebeurt, want je gaat een digital read doen op pins nul of een, en die zijn op dat moment in gebruik voor je seriële verbinding. Deze alinea word allemaal binnen de switch...case afgehandeld, want die sluit je niet af. Persoonlijk vind ik switch...case erg elegant om te gebruiken, maar hier slaat ie nergens op, en dat komt ongetwijfeld omdat je alle andere mogelijkheden dan 'A' uit die voorbeeld sketch hebt gesloopt.

Dan nog het debouncen van een switch: Als je een waarde leest, twijfelt over diens stabiliteit, dan moet je inderdaad even wachten. Jij besluit om te wachten, en vervolgens te concluderen dat waar je eerst aan twijfelde, nu vast wel voldoende gestabiliseerd is om te gebruiken. Denk je niet dat je 'm eerst nog een keer moet binnenhalen en beoordelen ? Anders hoef je in de eerste instantie ook niet te wachten tot ie stabiliseert, toch ?

Als ik nog langer kijk zal ik vast nog meer zien. Er is dus heel veel aan te merken op de sketch die je hier boven hebt staan. Maar 1 opmerking wil ik nog toevoegen: Als je iets verandert en je weet zelf niet exact wat dat doet, zet er dan //commentaar bij. Daarin zet je dan dus wat jij denkt wat er daar gebeurt. Er zijn wat mensen die al flink geoefend zijn in het coden, en vinden dat commentaar niet nodig is. Maar zolang je zelf nog niet die ervaring hebt, zet er dan vooral voldoende commentaren bij. Daarmee help je je zelf (en anderen) om te zien wat je van plan was of dacht te bereiken.

oke, point taken! Ik leg het even opzij verwerk jouw reply (waarvoor weer mijn dank) en ga zorgen dat ik beter beslagen ten ijs kom bij mijn volgende post.