Σάββατο 30 Ιανουαρίου 2010

Debouncing

Ξαναγράψαμε τον κώδικα με debouncing αλλά αυτήν την φορά το LED δεν αντιδρά με το pushbutton και όταν ανοίγουμε το Notepad κάνει μια φορά Enter αυτόματα και σταματάει. Το pushbutton δεν το επηρεάζει καθόλου. Έχουμε δοκιμάσει να βάλουμε το Serial.println("#S|SENDK|[0&{ENTER}]#"); κάτω και από το άλλο if και να αλλάξουμε και τις τιμές HIGH και LOW καταλήγοντας είτε να στένει συνεχώς εντολές είτε καθόλου, αλλά ποτέ μέσω του pushbutton.


const int buttonPin = 7; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
// variables will change:

int oldButtonState = LOW;
int ButtonState;
// 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);
Serial.begin(9600);

Serial.println("#S|NOTEPAD|[]#");




}
void loop()
{
int newButtonState = digitalRead(buttonPin);

if(newButtonState !=oldButtonState)
{
if (ButtonState == HIGH)
{
// turn LED on:
digitalWrite(ledPin, HIGH);

}
else
{
// turn LED off:
digitalWrite(ledPin, LOW);
delay(10);
Serial.println("#S|SENDK|[0&{ENTER}]#");
delay(10);
}
}

{
oldButtonState = newButtonState;
}

1 σχόλιο:

  1. Βρήκα τον παρακάτω ιστότοπο που φαίνεται μάλλον το λάθος που έχετε κάνει.

    http://boolscott.wordpress.com/2009/12/24/gobetwino-arduino-talking-to-excel/

    Το συγκεκριμένο παράδειγμα χρησιμοποιεί το excel, αλλά αυτό που θέλω να δείτε είναι πότε διαβάζει το Gobetwino το Arduino και πότε όχι.

    Ξεκινάει να διαβάζει με την εντολή #s (όπως Serial.print("#S|εντολή|[");) και όλο το κώδικα παρακάτω μέχρι να δει # (όπως Serial.println("]#");) Δείτε πως το χρησιμοποιεί o επισυναπτώμενος στην ιστοσελίδα κώδικας.

    ----
    void logData( int value1, int value2, int value3)
    {
    char buffer[5];

    Serial.print("#S|LOGTEST|["); // ΕΔΩ ΔΕΝ ΤΟ ΚΛΕΙΝΕΙ ΟΠΟΤΕ ΔΙΑΒΑΖΕΙ ΟΛΟ ΤΑ ΠΑΡΑΚΑΤΩ
    Serial.print(itoa((value1), buffer, 10));
    Serial.print(";");

    printDouble( double(value2)/1023*Vss, 3);
    Serial.print(";");

    // Add more and adjust functions inputs

    printDouble( double(value3)/1023*Vss, 3);
    Serial.println("]#"); // ΕΔΩ ΣΤΑΜΑΤΑΕΙ ΤΟ COBETWINO

    }

    ΑπάντησηΔιαγραφή