button schets

In het kader van “eerst proberen te lopen” ben ik bezig om de schets button fatsoenlijk werkend te krijgen. Helaas lukt dit niet. Ik hoop dat iemand mij weer wat richting kan geven. (dit na 3 avonden prutsen).

Ik gebruik een Uno bord. met op pin 2 de schakelaar. Daarnaast heb ik een weerstand naar gnd als de schakelaar uitstaat. Om zeker te zijn dat ik goede kontakten heb ik nu alles gesoldeerd met een dure honeywell schakelaar. Als ik de schakelaar aan zet brandt de led, maar als deze dan in de uitstand wordt gezet lijkt ik wel hans Kazan. de led blinkt zo nu en dan en als ik er met mijn hand in de buurt kom ga deze zo nu en dan ook aan.

wat doe ik fout. Ik heb al wat rond gekeken op het forum maar deze schets zo toch wel stabiel moeten zijn…

Toon de shets,de afbeelding en de tekening.

Ik heb een foto toegevoegd omdat ik misschien daar een fout in heb gemaakt.

de schets is de standaard die bij 1.8.5. zit ingebouwd.

Is voldoende info?

/*
  Button

  Turns on and off a light emitting diode(LED) connected to digital pin 13,
  when pressing a pushbutton attached to pin 2.

  The circuit:
  - LED attached from pin 13 to ground
  - pushbutton attached to pin 2 from +5V
  - 10K resistor attached to pin 2 from ground

  - Note: on most Arduinos there is already an LED on the board
    attached to pin 13.

  created 2005
  by DojoDave <http://www.0j0.org>
  modified 30 Aug 2011
  by Tom Igoe

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Button
*/

// constants won't change. They're used here to set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  } else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

Smitty12:
Is voldoende info?

Nee.
Die foto is heel onduidelijk (mede door onderbelichting).
Ik zie er een aantal draden op die veel te lang zijn, buiten zicht verdwijnen en ergens anders ineens weer op lijken te duiken.
Ik meen ook te zien dat er 2 weerstanden zijn die tussen de rode en de zwarte draad zitten, en ik neem aan dat rood aan 5 volt zit, en zwart aan GND zit (want dat is gebruikelijk).

Dat doet niet wat jij er van verwacht.
Want de weerstanden staan nu te proberen om de 5 volt naar GND te trekken, en dat gaan ze niet redden.
Dat doen ze ongeacht de stand van de schakelaar.
Wat je wil is dat de weerstanden de ingangspin van je Arduino naar GND trekken.
Dus gok ik dat je ze aan een andere kleur draad (en pin van je schakelaar) wil aansluiten.
[edit]En dat is ook wat er als commentaar in je code staat.[/edit]

Op je foto zie ik nog een weerstand, en een LED, maar waar die mee verbonden zijn is mij een raadsel.
Bovendien heb je die LED helemaal niet nodig, want met jouw code stuur je al de on board LED aan.
Maar je kunt 'm wel gebruiken als oefening want indien goed aangesloten kan het ook geen kwaad.

de weerstand moet op de ingang dus de witte draad, want nu zal bij UIT de ingang gaan zweven, en dus zal de LED ook gaan knipperen etc.
je kunt ook INPUT_PULLUP gebruiken. dan heb je al die weerstanden niet nodig. (dan gebruik je de weerstand die in de processor zit.

"probleem" opgelost.

De schakelaar werkte niet zoals ik had doorgemeten.
Omdat ik stug vasthield aan het "circuit vd button" had dit ook nooit kans van slagen.
De ingang bleef zweven.

Toen MAS3 de pen positie beschreef, viel het eurootje.
Vervolgens heb de juiste aansluiting gemaakt en voila.

De led zat er inderdaad aan als oefening.

Door dat het niet werkte had ik het INPUT_PULLUP ook gevonden en nog een paar andere zaken.

weer bedankt voor de reactie en op naar de volgende uitdaging.

De pullup inverteert de werking van je schakelaar wel.
Dat is geen enkel probleem voor de Arduino.
Maar voor de persoon die er mee gaat werken betekent het dat je andersom moet denken, dus anti-intuïtief.

De tekst in je sketch, beschrijft het schema rond de schakelaar perfect en als dat goed word opgevolgd, zal het ook werken.

Maar de beschrijving van hoe de LED moet worden aangesloten, is gewoon fout.
Want er wordt niet genoemd dat de LED ook nog een weerstand nodig heeft.
Wel word er ook genoemd dat die pin 13 al vaak een LED on board heeft, en als dat zo is, dan is de uitgang van de controller die aan pin 13 van je Arduino zit ook voorzien van een versterkertje (eigenlijk een buffer).
Maar wanneer je de LED zonder weerstand aan pin 13 hangt, blaas je vroeg of laat de LED op, en waarschijnlijk ook het buffertje.
Dus gewoon netje een weerstand gebruiken (en die is ook te zien op de foto, dus dat heb je wel gedaan).