Foutmelding: retrieve output: pipe: The handle is invalid

Beste allemaal, na het aanpassen van mijn code het het proberen van het toevoegen van een watchdog timer krijg ik dus de volgende foutmelding.

retrieve output: pipe: The handle is invalid

Ik ben hier heel eerlijk en zeg er dus bij dat ik eigenlijk te vroeg vooruit gesprongen ben en begonnen ben met code te kopiëren aanpassen en werkend te krijgen om ook iets functioneels met mijn arduino te doen dan alleen maar wat lampjes aan en uit te krijgen en wat geluid hier en daar te produceren. Waarschijnlijk had ik daarmee het een en ander wat sneller geleerd maar het ligt niet in mijn straatje. Is niet lui zijn maar meer zo van eerst proberen daarna de handleiding lezen. Gelukkig is de arduino daar wel redelijk bestand tegen.

maar nu dus niet!

Dit is mijn code die ik erop heb staan op het moment:

/* Photocell simple testing sketch. 
 
Connect one end of the photocell to 5V, the other end to Analog 0.
Then connect one end of a 10K resistor from Analog 0 to ground 
Connect LED from pin 11 through a resistor to ground 
For more information see http://learn.adafruit.com/photocells */


// dit deel voor de sleep

#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/wdt.h>

volatile int f_wdt=1;

int photocellPin = 0;     // the cell and 10K pulldown are connected to a0
int photocellReading;     // the analog reading from the sensor divider
int LEDROOD = 11;          // connect Red LED to pin 11 (PWM pin)
int LEDGEEL = 10;          // connect Red LED to pin 10 (PWM pin)

//slaapcode
ISR(WDT_vect)
{
  if(f_wdt == 0)
  {
    f_wdt=1;
  }
}

void enterSleep(void)
{
  set_sleep_mode(SLEEP_MODE_PWR_SAVE);   //EDIT: could also use SLEEP_MODE_PWR_DOWN for lowest power consumption. 
  sleep_enable();
  
  // Now enter sleep mode. 
  sleep_mode();
  
  // The program will continue from here after the WDT timeout
  sleep_disable(); // First thing to do is disable sleep. 
  
  // Re-enable the peripherals. 
  power_all_enable();
}


void setup(void) {
  // We'll send debugging information via the Serial monitor
  Serial.begin(9600); 
  /* Clear the reset flag. */
  MCUSR &= ~(1<<WDRF);
    /* In order to change WDE or the prescaler, we need to
   * set WDCE (This will allow updates for 4 clock cycles).
   */
  WDTCSR |= (1<<WDCE) | (1<<WDE);
  /* set new watchdog timeout prescaler value */
  WDTCSR = 1<<WDP0 | 1<<WDP3; /* 8.0 seconds */
  /* Enable the WD interrupt (note no reset). */
  WDTCSR |= _BV(WDIE);
}
 
void loop(void) {
  photocellReading = analogRead(photocellPin);  
 
  Serial.print("Analog reading = ");
  Serial.println(photocellReading);     // the raw analog reading
 
  if (photocellReading >= 400) {

  Serial.println("afstand groot");  // distance greater than 75 cm
  Serial.println(photocellReading);
  digitalWrite(LEDROOD, HIGH); 
 }
 
  else {
 
  Serial.println("afstand ok");
  Serial.println(photocellReading);
  digitalWrite(LEDROOD, LOW); 
 }
 
  if (photocellReading <= 100) {   // distance less then 25 cm
  Serial.println("afstand klein");
  Serial.println(photocellReading);
  digitalWrite(LEDROOD, HIGH);
  delay(500);                 
  digitalWrite(LEDROOD, LOW);    
  delay(500);                  
  digitalWrite(LEDROOD, HIGH);
  delay(500);                 
  digitalWrite(LEDROOD, LOW);    
  delay(500);  
  enterSleep();
}  
  
  else {
  digitalWrite(LEDGEEL, HIGH);
 
}

//delay before next reading
  delay(5000);
}

Duidelijk mag zijn dat ik van de watchdog geen flauw idee heb en het daar waarschijnlijk nis is gegaan. Is er iemand die mij een handje kan helpen hier?

Een tik op mijn vingers is waarschijnlijk niet misplaatst en die zal ik dan ook gemoedelijk accepteer, hopelijk met daarna een duwtje in de juiste richting :slight_smile:

First things first: waarom denk je een watchdog timer nodig te hebben? Wat houdt je project in? Wat moet de Arduino juist doen?

Waar krijg je die melding? Bij het compileren? Bij het uploaden?

Pieter

Pieter bedankt voor de snelle reactie.

Het project:
Offgrid leven in Portugal, energie van zonnepanelen en water komt uit de put.

Dit projectje is rond het water systeem bedacht. Vanuit de put wordt er een 1000L watertank gevuld. Als de tank onder een bepaald niveau komt loopt de zonneboiler leeg en is er dus geen warm water meer. Als het langer duurt is het water uit de tank leeg en het water op. In plaats van elke dag kijken in de tank, heb ik graag een systeem wat mij laat weten wanneer ik moet vullen.

Er wordt met een ultrasoon sensor gemeten.
Meer dan 75 cm afstand dan gaat er een led branden. Als ik buiten langs loop weet ik dat ik moet gaan vullen.
Ik zet de benzine pomp aan en de tank gaat vullen, is de afstand minder dan 75 cm dan gaat de led weer uit.
Als vervolgens de afstand tot het water minder is dan 25 cm, de led gaat knipperen. Ik zet de pomp uit.

Na dit mag het geheel in sleep gaan. Ik hoef nu minstens 36 uur niet meer te controleren. Waarom?
1: binnen 36 uur gaat de tank niet leeg zijn
2: de led hoeft niet meer te knipperen, eenmaal is genoeg ik wet dat de pomp uit moet. nu blijft de led knipperen totdat er water verbruikt is en de afstand tot het water groter is dan 25 cm.
3: in een later stadium wil ik een barebone in elkaar solderen om zo het geheel op een batterij te kunnen draaien.

*Op dit moment werk ik me een lichtsensor om de meting van de ultrasoon te emuleren

  • Foutmelding komt bij het uploaden. compileren gaat goed.

Ik hoop dat je genoeg info hebt, als je meer moet weten laat het weten aub.

Roderick

Dan zul je de volledige error bij het uploaden moeten posten. Zet eerst 'verbose output' tijdens het uploaden aan in de instellingen van de IDE, en gebruik [code][/code] tags bij het posten.

Dit is een erg nuttig artikel over power saving op Arduino: www.gammon.com.au/power

Pieter

Hmm, vandaag zet ik de computer aan en alles wordt zo weggeschreven. Ergens een fout van Windows misschien?

In heeft geval bedankt voor de reacties.

Dat linkje had ik gevonden inderdaad. Ik ga er nog eens naar kijken en trial ein error er op loslaten.