Εμφάνιση αποτελεσμάτων : 1 έως 6 από 6

Θέμα: Arduino-serial read

  1. #1
    Μέλος Το avatar του χρήστη xmaze
    Όνομα
    Νίκος
    Εγγραφή
    May 2010
    Περιοχή
    Μακεδονία
    Μηνύματα
    1.034

    Προεπιλογή Arduino-serial read

    Έχω μιά απορία για ένα πρόγραμμα που θέλω να διαβάζει έναν αριθμό από το πληκτρολόγιο και να κάνει τις αντίστοιχες στεπς σε μοτορ.

    αλλά όταν γράφω 100, 250 αυτό διαβάζει μόνο των 1 αριθμό δηλαδή το 1 και το 2!!
    Καμιά λύση??

    0 Not allowed! Not allowed!

  2. #2
    Νέο Μέλος Το avatar του χρήστη intrepid
    Όνομα
    Ανέστης
    Εγγραφή
    Sep 2009
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2

    Προεπιλογή

    Εννοείς ότι στέλνεις μέσω του serial monitor τους αριθμούς και αυτό τους "κόβει"; Πρέπει να μας δείξεις το πρόγραμμα που χρησιμοποιείς, το βηματικό, τον οδηγό του... Πώς ξέρεις ότι το πρόγραμμα διαβάζει μόνο το 1 ψηφίο;

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη herctrap
    Όνομα
    Ηρακλής
    Εγγραφή
    May 2010
    Περιοχή
    Αιγάλεω / Πυλος
    Μηνύματα
    1.971

    Προεπιλογή

    οριστε

    if (kind_of_data == 'R' ) Read_Rpm();
    if (kind_of_data == 'S' ) Read_Speed();
    if (kind_of_data == 'F' ) Read_Fuel();
    if (kind_of_data == 'T' ) Read_Turbo();
    if (kind_of_data == 'G' ) Read_Gear();
    void Read_Rpm(){

    delay(2);
    int Rpm100 = Serial.read()- '0';
    delay(2);
    int Rpm10 = Serial.read()- '0';
    delay(2);
    int Rpm1 = Serial.read()- '0';

    int rpm = 100*Rpm100 + 10*Rpm10 + Rpm1;
    οποτε αν στειλεις R220

    στο rpm θα παρεις 220

    αν το κανεις απο το serial monitor του arduino δοκιμασε και με ενα 1ms delay

    αμα δεν καταλαβες κατι ξαναρωτα

    0 Not allowed! Not allowed!

  4. #4
    Μέλος Το avatar του χρήστη xmaze
    Όνομα
    Νίκος
    Εγγραφή
    May 2010
    Περιοχή
    Μακεδονία
    Μηνύματα
    1.034

    Προεπιλογή

    <?PHP:
    #include <Stepper.h>

    // change this to the number of steps on your motor
    #define STEPS 64

    // create an instance of the stepper class, specifying
    // the number of steps of the motor and the pins it's
    // attached to
    Stepper stepper(STEPS911810);

    // the previous reading from the analog input
    int previous;
    int val;
    void setup()
    {
      
    // set the speed of the motor to 30 RPMs
      
    stepper.setSpeed(60);
      
    Serial.begin(9600);
    }

    void loop()
    {
      if (
    Serial.available() > 0) {

        
    val Serial.read();

      }

      
    // move a number of steps equal to the change in the
      // sensor reading
      
    stepper.step(val previous);

      
    // remember the previous value of the sensor
      
    previous val;

    To kind_of_data είναι συνάρτηση??

    0 Not allowed! Not allowed!

  5. #5
    Μέλος Το avatar του χρήστη herctrap
    Όνομα
    Ηρακλής
    Εγγραφή
    May 2010
    Περιοχή
    Αιγάλεω / Πυλος
    Μηνύματα
    1.971

    Προεπιλογή

    οχι αλλα απο το game στελνω τιμες 0-255 για καθε ενα απο τα παρακατω

    R στροφες
    S ταχυτητα
    G gear
    F καυσιμα

    και για να ξερω τι 0-255 στελνω καθε φορα βαζω μπροστα τι ειναι

    το kind of data διαβαζει αυτα τα γραμματα

    στο επομενο ποστ αν χωρεσει θα σου δωσω ολο τον κωδικα απο αυτο

    http://www.hlektronika.gr/forum/showthread.php?t=51141

    ο κωδικας για το rpm κινει ενα stepp motor

    διαβαζοντας τιμες 0-255

    ελενχεις το μοτερ

    0 Not allowed! Not allowed!

  6. #6
    Μέλος Το avatar του χρήστη herctrap
    Όνομα
    Ηρακλής
    Εγγραφή
    May 2010
    Περιοχή
    Αιγάλεω / Πυλος
    Μηνύματα
    1.971

    Προεπιλογή

    #include <Stepper.h>
    #include <Servo.h>

    Stepper stepper(48, 24, 23, 22, 25);
    Servo fuelservo;
    Servo turboservo;



    int rpm;
    int i;
    int leds;
    int Speed;
    int fuel;
    int fuelled;
    int Turbo;
    int gear;
    int previous_potion = 0;
    int rotate;

    char kind_of_data;


    void setup(){

    Serial.begin(9600);

    stepper.setSpeed(300);
    fuelservo.attach(2);
    turboservo.attach(3);

    pinMode(3, OUTPUT);
    pinMode(8, OUTPUT);

    //****************************** Set LCD ******************************
    Serial.print(0xFE, BYTE);
    Serial.print("B");
    Serial.print(9); //

    Serial.print(0xFE, BYTE);
    Serial.print("Z");

    Serial.print(0xFE, BYTE);
    Serial.print("L");
    Serial.print("01");
    Serial.print("01");
    Serial.print("Speed :");

    Serial.print(0xFE, BYTE);
    Serial.print("L");
    Serial.print("02");
    Serial.print("01");
    Serial.print("Gear :");



    }



    void loop()
    {
    //****************************** READ DATA FROM SERIAL ******************************
    while(Serial.available() > 0)
    {

    kind_of_data = Serial.read();
    if (kind_of_data == 'R' ) Read_Rpm();
    if (kind_of_data == 'S' ) Read_Speed();
    if (kind_of_data == 'F' ) Read_Fuel();
    if (kind_of_data == 'T' ) Read_Turbo();
    if (kind_of_data == 'G' ) Read_Gear();


    }


    //****************************** READ DATA FROM SERIAL END ******************************
    }

    void Read_Rpm(){

    delay(2);
    int Rpm100 = Serial.read()- '0';
    delay(2);
    int Rpm10 = Serial.read()- '0';
    delay(2);
    int Rpm1 = Serial.read()- '0';

    int rpm = 100*Rpm100 + 10*Rpm10 + Rpm1;


    rpm = map(rpm,127,255,0,45);
    if (rpm >=42) digitalWrite(3,HIGH);
    rotate = rpm - previous_potion;
    stepper.step(rotate);
    previous_potion = rpm;
    if (rpm <42) digitalWrite(3,LOW);

    for(i=38; i<=leds ; i++)digitalWrite(i,LOW);
    for(leds=38; leds<=(rpm+7); leds++)digitalWrite(leds,HIGH);


    }

    void Read_Speed(){

    delay(2);
    int Speed100 = Serial.read()- '0';
    delay(2);
    int Speed10 = Serial.read()- '0';
    delay(2);
    int Speed1 = Serial.read()- '0';

    Speed = 100*Speed100 + 10*Speed10 + Speed1;

    Speed = map(Speed,127,255,0,255);

    Serial.print(0xFE, BYTE);
    Serial.print("L");
    Serial.print("01");
    Serial.print("09");
    Serial.print(Speed);
    Serial.print(" ");
    }

    void Read_Fuel(){
    delay(2);
    int Fuel100 = Serial.read()- '0';
    delay(2);
    int Fuel10 = Serial.read()- '0';
    delay(2);
    int Fuel1 = Serial.read()- '0';

    fuel = 100*Fuel100 + 10*Fuel10 + Fuel1;

    fuelled = map(fuel,127,255,0,100);
    fuel = map(fuel,127,255,60,130);

    fuelservo.write(fuel);

    if (fuelled <= 4)digitalWrite(51,HIGH);
    if (fuelled > 4)digitalWrite(51,LOW);
    }

    void Read_Turbo(){

    delay(2);
    int turbo100 = Serial.read()- '0';
    delay(2);
    int turbo10 = Serial.read()- '0';
    delay(2);
    int turbo1 = Serial.read()- '0';

    Turbo = 100*turbo100 + 10*turbo10 + turbo1;

    Turbo = map(Turbo,127,255,10,100);
    turboservo.write(Turbo);
    }





    void Read_Gear(){
    delay(2);
    int Gear100 = Serial.read()- '0';
    delay(2);
    int Gear10 = Serial.read()- '0';
    delay(2);
    int Gear1 = Serial.read()- '0';

    gear = 100* Gear100 + 10*Gear10 + Gear1;

    gear = map(gear,127,255,0,;


    Serial.print(0xFE, BYTE);
    Serial.print("L");
    Serial.print("02");
    Serial.print("09");
    if ( (gear != 0) && (gear != 1) ) Serial.print(gear-1);
    if ( gear == 0 ) Serial.print("R");
    if ( gear == 1 ) Serial.print("N");

    }
    ισως λειπουν μερικα { ] ) γιατι εσβησα ενα μερικα στο τελος γιατι δεν χωραγαν

    0 Not allowed! Not allowed!

Παρόμοια Θέματα

  1. Απαντήσεις: 17
    Τελευταίο Μήνυμα: 09-09-19, 12:50
  2. Serial to Usb
    By geokos13 in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 43
    Τελευταίο Μήνυμα: 25-06-10, 13:19
  3. Μαθημα στη Microbasic No9(ADC READ)
    By billtech in forum Μικροελεγκτές
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 26-12-08, 11:01
  4. SERIAL EEPROM σε PIC
    By DT200 in forum Μικροελεγκτές
    Απαντήσεις: 16
    Τελευταίο Μήνυμα: 29-08-06, 18:14
  5. Pc lcd serial ?
    By athens2004 in forum Κυκλώματα Εικόνας-'Ηχου & Φωτισμού
    Απαντήσεις: 7
    Τελευταίο Μήνυμα: 08-07-06, 00:56

Tags for this Thread

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας