-         

Ergebnis 1 bis 8 von 8

Thema: Mit dem asuro rechnen ????

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2012
    Beiträge
    10

    Idee Mit dem asuro rechnen ????

    Anzeige

    Hallo Leute,
    Ich möchte mit meinem Asuro eine dreistellige Zahlen mit 2 multiplizieren.
    Ich möchte meinem asuro über das hyperterminal eine dreistellige Zahl die er multipliziert und sie mir dann über das hyperterminal ausgibt!!
    für einen anstoß bzw tipp wäre ich erfreut.
    weiss nicht wo ich anfangen soll

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.265
    Hallo, das ist kein Problem.
    Einfach im Asuro das was über die serielle Schnittstelle reinkommt (die 3 stellige Zahl) einlesen. In einen integer konvertieren, dann man 2 nehmen und wieder über die serielle Schnittstelle ausgeben.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2012
    Beiträge
    10
    Ja Hallo hast du da vieleicht ein Code-Beispiel ich stehe voll auf den Schlauch.
    Für mich ist es gerade ein riesen Problem.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.265
    Für den Arduino gibt es mehr als genug Beispiele wie man
    1. Daten von der Seriellen schnittstelle einliest (Serialport.Read())
    2. Datentypen in einander umwandelt ( itoa() )
    3. Wie man mit Integern rechnet
    4. Wie man Daten über die Serielle Schnittstelle ausgibt

    Mit den Informationen solltest du es selbst hinbekommen ( Lerneffekt und so....)

    Wenn nicht schreib doch bitte an welcher Stelle du genau hängst und welchen Code du bisher hast

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Man könnte das vielleicht auch "von Hand" ausrechnen:

    PHP-Code:
    // asuro multipliziert dreistellige Zahl mit 2                          mic 7.6.2012

    // Die über die serielle Schnittstelle empfangene dreistellige Zahl wird üngeprüft
    // mit zwei multipliziert und das Ergebniss wird zurückgesendet

    // http://www.roboternetz.de/community/threads/58106-Mit-dem-asuro-rechnen

    #include "asuro.h"

    char zahl[3]; // drei Ziffern mit Index 0 bis 2
    char ergebniss[4]; // das Ergebniss könnte vierstellig sein
    unsigned char tempiuebertrag;

    int main(void)
    {
        
    Init();
        
    SerWrite("\n\rasuro Taschenrechner\n\n\r"25);

        
    SerWrite("Bitte dreistellige Zahl eingeben\n\rund mit [Enter] absenden\n\r"60);
        
    SerRead(zahl30); // drei Zeichen ohne Timeout einlesen
           
        
    StatusLED(YELLOW);
        
    i=2// Index auf Einerstelle setzen
        
    uebertrag=0// noch kein Übertrag von der vorhergehenden Stelle

        
    do
        {
            
    temp=zahl[i]-'0'// Ziffer von ascii nach dezimal umrechnen
            
    temp=temp*2+uebertrag// mit 2 multiplizieren und Übertrag berücksichtigen
            
    if(temp 9// Übertrag erkennen
            
    {
                
    uebertrag=1// Übertrag auf nächste Stelle
                
    temp=temp-10;
            }
            else
                
    uebertrag=0// kein Übertrag
            
    ergebniss[i+1]=temp+'0'// Wert in ascii-Ziffer umrechnen und speichern
        
    }while(i-- != 0); // nächste Stelle berechnen

        
    if(uebertrag// erste Stelle berechnen (keine Prüfung auf führende Nullen)
            
    ergebniss[0]='1'// 1 wenn Übertrag...
        
    else
            
    ergebniss[0]=' '// sonst Leerzeichen
               
        
    SerWrite(ergebniss4); // Ergebniss ausgeben
        
    SerWrite("\n\r",2);

        
    StatusLED(RED); // Aufgabe erledigt und Programmende
        
    while(1);
        return(
    0);

    (ungetestet)

    Keine Ahnung ob das so funktioniert. Wenn du es zu laufen bringst und kapiert hast, wie ich mir das gedacht habe, hast du auch schon einiges gelernt. Als Zusatz könnte man noch eine Prüfung der eingegebenen Zahl einbauen, die führenden Nullen entfernen und das Ganze als Endlosschleife umsetzen.

    Gruß

    mic

    [Edit]
    PHP-Code:
        SerWrite(zahl3); // Ergebniss ausgeben
        
    SerWrite("*2="3);
        
    SerWrite(ergebniss4);
        
    SerWrite("\n\r"2); 
    Geändert von radbruch (08.06.2012 um 00:31 Uhr)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Benutzer Stammmitglied Avatar von Vilem
    Registriert seit
    05.12.2010
    Ort
    bei Bad Kreuznach
    Beiträge
    53
    Hallo radbruch,
    ja Freude für mich, Dein code funktioniert ! Ich habe auch Deinen 2. Teil und eine Endlosschleife eingefügt. Leider habe ich den SerWrite-Befehl noch nicht gerafft: statt *2 wird nd ausgegeben und an das Ergebnis ein n angehängt. Enter braucht bei dreistelliger Zahl nicht eingegeben werden (Ergebnis kommt von selbst), aber bei nur zweistelliger, Ergebnis ist dann um 1 zu hoch, d.h. die Mathe-Syntax habe ich nur bruchstückhaft kapiert.
    PHP-Code:
    // asuro multipliziert dreistellige Zahl mit 2                          mic 7.6.2012
    // Die über die serielle Schnittstelle empfangene dreistellige Zahl wird üngeprüft
    // mit zwei multipliziert und das Ergebniss wird zurückgesendet
    // http://www.roboternetz.de/community/threads/58106-Mit-dem-asuro-rechnen
    #include "asuro.h"
    char zahl[3]; // drei Ziffern mit Index 0 bis 2
    char ergebniss[4]; // das Ergebniss könnte vierstellig sein
    unsigned char tempiuebertrag;
    int main(void)
    {
      
      while(
    1)
      {
        
    Init();
        
    SerWrite("\n\rasuro Taschenrechner\n\n\r"25);
        
    SerWrite("Bitte dreistellige Zahl eingeben\n\rund mit [Enter] absenden\n\r"60);
        
    SerRead(zahl30); // drei Zeichen ohne Timeout einlesen
           
        
    StatusLED(YELLOW);
        
    i=2// Index auf Einerstelle setzen
        
    uebertrag=0// noch kein Übertrag von der vorhergehenden Stelle
        
    do
        {
            
    temp=zahl[i]-'0'// Ziffer von ascii nach dezimal umrechnen
            
    temp=temp*2+uebertrag// mit 2 multiplizieren und Übertrag berücksichtigen
            
    if(temp 9// Übertrag erkennen
            
    {
                
    uebertrag=1// Übertrag auf nächste Stelle
                
    temp=temp-10;
            }
            else
                
    uebertrag=0// kein Übertrag
            
    ergebniss[i+1]=temp+'0'// Wert in ascii-Ziffer umrechnen und speichern
        
    }while(i-- != 0); // nächste Stelle berechnen
        
    if(uebertrag// erste Stelle berechnen (keine Prüfung auf führende Nullen)
            
    ergebniss[0]='1'// 1 wenn Übertrag...
        
    else
            
    ergebniss[0]=' '// sonst Leerzeichen
                 
    SerWrite(zahl3); // Ergebniss ausgeben,
                 
        
    SerWrite("*2="3); 
        
    SerWrite(ergebniss4);
        
    SerWrite("\n\r"2);  
        
    //SerWrite(ergebniss, 4); // Ergebniss ausgeben
        //SerWrite("\n\r",2);
        
    StatusLED(RED); // Aufgabe erledigt und Programmende
      
    }
        while(
    1);
        return(
    0);

    *** fail faster to succeed sooner ***

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Schön, wenn es auf Anhieb funktioniert. :)

    Vielleicht funktioniert diese Variante:

    zahl[0]='*';
    zahl[1]='2';
    zahl[2]='=';
    SerWrite("zahl", 3);

    Serwrite(text, anzahl) sendet anzahl Werte ab der Speicherstelle deren erste Adresse die Speicheradresse von text ist.

    Von zweistelligen Zahlen haben wir nie gesprochen...

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2012
    Beiträge
    10
    Hey Jungs, hat einwandfrei geklappt Entschuldigt bitte das ich mich so spät melde, hatte am Wochenende Schützenfest etc
    Ich hab nur die Libary geändert und das wars
    Schöne Woche noch.

Ähnliche Themen

  1. Rechnen mit Gleitkommazahlen
    Von daniel.weber im Forum C - Programmierung (GCC u.a.)
    Antworten: 20
    Letzter Beitrag: 09.05.2011, 15:38
  2. Rechnen mit Bascom
    Von Pedder im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 26.09.2009, 23:07
  3. Rechnen Problem
    Von Movie85 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 11.08.2008, 22:08
  4. Zinsaufgabe rechnen (mit dem Boe-Bot)
    Von butt-bot im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 28.03.2007, 22:14
  5. Gruppenschaltung rechnen
    Von Larzarus im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 28.07.2006, 17:55

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •