Forum: Mikrocontroller und Digitale Elektronik Arduino Uno 'BYTE'


von Lutz H. (luhe)


Lesenswert?

Ich habe dieses Beispiel genommen :
1
/*********************************************************************
2
**  Device: AD9850/9851                                             **
3
**  File:   EF_AD9850_Serial.pde                                    **
4
**                    **
5
**  Created by ElecFreaks Robi.W /28 Oct 2011                       **
6
**                                            
7
8
Diese Zeile bringt die Fehlermeldung:
9
// set 3 most significant bits and send out
10
  Serial.print(hb|224,BYTE);
  Fehlermeldung
'BYTE' wird nicht länger unterstützt.

Arduino: 1.5.5-r2 (Windows 7), Board: "Arduino Uno"

C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++ -c -g -Os 
-w -fno-exceptions -ffunction-sections -fdata-sections -MMD 
-mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=155 -DARDUINO_AVR_UNO 
-DARDUINO_ARCH_AVR -IC:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files 
(x86)\Arduino\hardware\arduino\avr\variants\standard 
C:\Users\QX80962\AppData\Local\Temp\build7888266717169307761.tmp\EF_AD98 
5x_Serial.cpp  -o 
C:\Users\QX80962\AppData\Local\Temp\build7888266717169307761.tmp\EF_AD98 
5x_Serial.cpp.o

EF_AD985x_Serial.pde: In function 'void loop()':
EF_AD985x_Serial.pde:134: error: 'BYTE' was not declared in this scope


Und so habe ich diese geändert, ist das richtig?

 Serial.write(hb|224);

Ist schwierig herauszufinden, was Serial.print genau  gemacht hat, da es 
nicht mehr aktuell ist.

 Danke für die Hilfe
 Lutz

: Bearbeitet durch User
von Philip P. (nosuchnick)


Lesenswert?

> Ist schwierig herauszufinden, was Serial.print genau  gemacht hat, da es
nicht mehr aktuell ist.

> 'BYTE' wird nicht länger unterstützt.

http://arduino.cc/en/Serial/Print

Ich nehme an, dass das BYTE ähnlich zu den immer noch aktuellen DEC, 
HEX, OCT und BIN funktioniert hat, und dem BIN am nächsten kommt.

Mit deiner aktuellen Leerzeichen Variante wird das etwas unleserlich, da 
nur folgende 8 Buchastaben ausgegeben werden könnten:

NULL, ' ', '@', '`', '€', ' ', 'À', 'à'

(Ergebnisse können abhängig vom Char Satz schwanken)

von Lutz H. (luhe)


Lesenswert?

Danke für die Hilfe.
Dadurch habe ich die Richtung gefunden in der ich weitersuchen muss.
Im Arduino Cookbook ist es beschrieben.
Durch 'BYTE' wird eine Zeichenkette aus Einsen und Nullen  ausgegeben.

die Zeile im Buch:
intValue: 65 A 65 41 101 1000001

Meine Lösung, die Fehlermeldung des Compilers zu vermeiden, erzeugt ein 
anderes Verhalten des Programms.

von Philip P. (nosuchnick)


Lesenswert?

> Durch 'BYTE' wird eine Zeichenkette aus Einsen und Nullen ausgegeben.

Das entspricht den immer noch unterstützten
1
Serial.print(hb|224,BIN);

> die Zeile im Buch:
1
als characater: A
2
DEC: 65
3
HEX: 41
4
OCT: 101
5
BIN: 1000001

> Meine Lösung, die Fehlermeldung des Compilers zu vermeiden,
> erzeugt ein anderes Verhalten des Programms.

Das liegt daran, dass Serial.write und Serial.print unterschiedlich mit 
Nummern umgehen.

Serial.write interpretiert eine Nummer als einen Eintrag in der ASCII 
Tabelle 
(http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange). 
Eine 65 wäre zum Beispiel ein 'A' oder eine 32 wäre ein Leerzeichen.

Serial.print dagegen wandelt Nummern normalerweise in Text um, aus einer 
65 werden die beiden einzelnen Zeichen '6' und '5'. Optional kann man 
noch eine Basis (http://de.wikipedia.org/wiki/Stellenwertsystem) 
angeben, um die Zahlen statt in Dezimal in Hexadezimal, Octal oder Binär 
auszugeben.

Wenn man eine Zahl Binär ausgibt, entspricht das einer Darstellung der 
einzelnen Bits.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.