Ich schreibe Code in Energia mit dem Launchpad mso430g2553 und einem externen Taster mit Pullup-Widerstand. Der Code sollte einfach den Zustand der Schaltfläche auf dem seriellen Monitor anzeigen, 1 für gedrückt, 0 für nicht gedrückt. Dies ist der Code, den ich verwende:
int pushButton = 5;
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make the pushbutton's pin an input:
// NOTE this is different from the on-board pushbutton
pinMode(pushButton, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton);
// print out the state of the button:
Serial.println(buttonState);
delay(1); // delay in between reads for stability
}
Dies ist die Schaltungskonfiguration, die ich verwende:
Mein Problem ist, dass ich beim Ausführen des Programms immer 0 bekomme, egal ob die Taste gedrückt ist oder nicht. Es scheint, als ob das Programm die Eingabe von der Schaltfläche nicht liest oder ich die Schaltfläche falsch angeschlossen habe. Ich kann das Problem jedoch nicht finden, ich habe versucht, den Knopf um 90 Grad zu drehen, und ich habe die gegenüberliegenden Beine des Knopfes mit Masse und dem Stift verbunden. Wäre eine Lösung vielleicht, einen Entprellkondensator hinzuzufügen? Jede Hilfe wäre sehr willkommen!
Laut OP in Kommentaren, wie von @TomCarpenter befragt, war das Problem die Ausrichtung des 4-poligen Taktschalters, den OP verwendete. Die geschaltete Verbindung wurde nicht verwendet und P1.3 dauerhaft mit Masse verbunden.
user_1818839
int pushButton = 5;
Ihr Schalter dem Hardware-Pin P1.3 zu?Maria
CL.
Maria
user_1818839
static const uint8_t P1_3 = 5;
also sieht der Pin OK aus. Messen Sie als nächstes die tatsächlichen Spannungen an diesem Pin ...Tom Tischler
Maria