SOLVED - Schakel PIN in, activeer ook een andere pin in Arduino

Ik zou graag willen weten.

Ik heb Pin 6, 7, 8 en 9 als INPUT_PULLUP. Ik heb overgeschakeld op elke andere pin. Waarom als ik druk op schakelaar bij PIN 6. SOMS% PIN 7 krijgt ook invoer. Ander geval, ook als ik op 7 druk, schakel ook andere pin in. Waarom?

Deze zaak is willekeurig. Soms is alles in orde als ik 10 keer druk, maar daarna ook een andere pin. Een ander geval slechts 4-5 keer drukken, dan andere pin ook trigger.

Ik gebruik schakelaar aan/uit, niet tijdelijke schakelaar.

Hoe dit op te lossen? Is het een bekend probleem met Arduino?

UPDATE

Programma. (Eenvoudig programma)

int led1 = 1;
int led2 = 2;
int led3 = 3;
int led4 = 5;

int switch1 = 6;
int switch2 = 7;
int switch3 = 8;
int switch4 = 9;

int led = 13;

//int counter = 0;

void setup()
{
 //put your setup code here, to run once
      pinMode(led1, OUTPUT);
      pinMode(led2, OUTPUT);
      pinMode(led3, OUTPUT);
      pinMode(led4, OUTPUT);
      pinMode(switch1, INPUT_PULLUP);
      pinMode(switch2, INPUT_PULLUP);
      pinMode(switch3, INPUT_PULLUP);
      pinMode(switch4, INPUT_PULLUP);
      pinMode(led, OUTPUT);
}  
void loop()
{

if (digitalRead(switch1) == 0){
  digitalWrite(led1, HIGH);
  }

 if (digitalRead(switch1) == 1){
  digitalWrite(led1, LOW);
  } 

if (digitalRead(switch2) == 0){
  digitalWrite(led2, HIGH);
  }

 if (digitalRead(switch2) == 1){
  digitalWrite(led2, LOW);
  } 


if (digitalRead(switch3) == 0){
  digitalWrite(led3, HIGH);
  }

 if (digitalRead(switch3) == 1){
  digitalWrite(led3, LOW);
  } 


if (digitalRead(switch4) == 0){
  digitalWrite(led4, HIGH);
  }

 if (digitalRead(switch4) == 1){
  digitalWrite(led4, LOW);
  } 

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

}

Schematische

Mijn Circuit is zo simpel als voor de input. Voor de uitvoer alleen naar led, weerstand en aarde.

I found similar case http://www.instructables.com/id/Arduino-Push-Switch-Debouncing-Interrupts/

Op de website zei hij: "Het probleem met deze opstelling was toen het   knop is ingedrukt, werd de interrupt meerdere keren aangeroepen en   zelfs andere knoppen omdraaien. Waarom gebeurde dit? Het wordt veroorzaakt door   een switch bouncing feedback. "

Is er een oplossing zonder de hardware aan te passen?

TE LOSSEN

Het probleem is de draad.

Mijn draad voor schakelaar is startkabel en elkaar dichter bij elkaar (aanraken) kabel. Ik probeer te scheiden en werkt. Er zal geen andere pin worden geactiveerd.

0
Uw vraag zegt dat u "Pin 2 en 3 als INPUT_PULLUP" hebt, maar in de codepennen 2 en 3 worden gebruikt als uitgangen naar LED2 en LED3. Bewerk de vraag en verwijder de inconsistentie. Verwijder ook "interrupt" uit de vraagtitel omdat het lijkt of de vraag niets te maken heeft met interrupts.
toegevoegd de auteur Martin C. Martin, de bron
@Nateowami, ik heb mijn vraag met code en schema bijgewerkt. Heb je hier enige ervaring mee? Omdat ik vind dat er iets mis moet zijn met de Arduino.
toegevoegd de auteur Reunanen, de bron
@NickGammon Ik ben mijn vraag met code en schema bijgewerkt. Heb je hier enige ervaring mee? Omdat ik vind dat er iets mis moet zijn met de Arduino.
toegevoegd de auteur Reunanen, de bron
@Nateowami Ik controleer de switch2 en switch3 met een multimeter en het maakt geen verbinding. Ik gebruik de lampschakelaar (aan/uit) en niet de tijdelijke schakelaar. Simpele vraag: het zou perfect moeten werken, toch? Ik heb ook ander gedrag, wanneer ik het apparaat inschakel, andere lamp ook aan, minder dan 1 sec. Bekijk mijn video youtube.com/watch?v=s6CxPuQya0g
toegevoegd de auteur Reunanen, de bron
@Majenko, wat bedoel je? Ik begreep het niet. Sorry.
toegevoegd de auteur Reunanen, de bron
@NickGammon Ik heb mijn bericht al gewijzigd.
toegevoegd de auteur Reunanen, de bron
mijn vraag is opgelost. Bedankt iedereen.
toegevoegd de auteur Reunanen, de bron
Ik zou willen voorstellen dit artikel te lezen hackaday.com/2015/12/10/… (en ook deel een). Elliot behandelt alles over schakelaars, het schakelen van ruis en hoe het probleem op te lossen (debouncing) in software.
toegevoegd de auteur German, de bron
Verlies de vertraging (1000)
toegevoegd de auteur Majenko, de bron
Ik bedoel vertraging is altijd een slecht idee, ongeacht wat je doet - vooral wanneer je schakelaars leest en verwacht dat ze op een normale manier zullen reageren.
toegevoegd de auteur Majenko, de bron
Is wat een veelvoorkomend probleem? Zonder schema en zonder code, heeft uw vraag geen enkele zin. Lees Hoe stel ik een goede vraag?
toegevoegd de auteur Nick Gammon, de bron
Waarom als ik druk op schakelaar bij PIN 2. SOMS WORDT PIN 3 ook invoer. - u hebt LED's op pen 2 en pen 3, geen schakelaars. Dus uw vraag klopt niet. Bewerk de code en het schema, zodat er tenminste enige interne consistentie is.
toegevoegd de auteur Nick Gammon, de bron
Kun je een schema of een eenvoudig schema van je circuit posten?
toegevoegd de auteur Brett Ryan, de bron
Heb je je draden gecontroleerd om er zeker van te zijn dat de draden voor led2 en led3 elkaar niet raken? Als ze elkaar raken, kunnen ze soms de verkeerde verlichten. Controleer ook de draden voor switch2 en switch3. Wat voor schakelaar gebruik je?
toegevoegd de auteur Brett Ryan, de bron

1 antwoord

Misschien krijg je schakelruis tussen de knoppen van de knop, die laag en kort is, maar zonder enige redenering, het kan net genoeg zijn om het effect te veroorzaken dat je ziet.

Ik zou voorstellen 1) een korte functie te schrijven die debounces en leest een knop; en 2) gebruik van if/else-instructies in plaats van elke knop twee keer te testen.

Een snelle test is om een ​​paar draden dichter bij elkaar of verder van elkaar te houden terwijl u op een van die twee knoppen drukt en te kijken of de afstand tussen het effect verandert. Als dit het geval is, hebt u de oorzaak gevonden.

0
toegevoegd