INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Inhalt einer Variable mit per Virtual Wire versenden
18.03.2016, 22:36
Beitrag #1
Inhalt einer Variable mit per Virtual Wire versenden
Hallo in die Runde,

ich habe ein Problem wo ich eure Hilfe benötige. Ich möchte gerne mir die Akku Spannung per Virtual Wire auf einen Arduino senden lassen. Die Akkuspannung wird in der Variable long vcc gespeichert.

Virtual Wire versendet den Text bzw. die Nachricht mit folgenden Zeilen:

Code:
const char *msg = vcc;       // this is your message to send
vw_send((uint8_t *)msg, strlen(msg));

Hier bekomme ich natürlich eine Fehlermeldung:

Code:
invalid conversion from 'long int' to 'const char*' [-fpermissive]

Wie kann ich long int zu const char umwandeln bzw. Wie kann ich den Inhalt der long Int versenden?

Danke und Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.03.2016, 22:56
Beitrag #2
RE: Inhalt einer Variable mit per Virtual Wire versenden
Das geht in mehreren Schritten.

In der Deklaration:
Code:
unsigned long vcc = 0;
char Msg[10];

In der Loop, vcc enthält deinen Wert:
Code:
float h = vcc;                               // Wert1 Long in Float wandeln
h_as_int = h;                                // In Int wandeln                
sprintf (Msg, "%d", h_as_int);               // In char formatieren

Msg kannst du dann versenden.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.03.2016, 12:06
Beitrag #3
RE: Inhalt einer Variable mit per Virtual Wire versenden
Vielen Dank das hat funktioniert. Es wird zwar nichts gesendet aber das ist wohl noch ein anderes Problem wo ich erst mal genauer schauen muss

Viele Grüße
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.03.2016, 12:12
Beitrag #4
RE: Inhalt einer Variable mit per Virtual Wire versenden
(20.03.2016 12:06)toto1975 schrieb:  Vielen Dank das hat funktioniert. Es wird zwar nichts gesendet aber das ist wohl noch ein anderes Problem wo ich erst mal genauer schauen muss

Dann zeig doch mal den kompletten Sketch.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.03.2016, 12:54 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2016 12:55 von toto1975.)
Beitrag #5
RE: Inhalt einer Variable mit per Virtual Wire versenden
Okay, die Messung stimmt und die LED geht auch bei niedriger Spannung an. Die Spannung wird allerdings nicht versendet bzw. kann ich an meinen anderen Arduino Mega nichts empfangen. Der Empfänger funktioniert aber das haben andere Tests gezeigt.

Hier mal mein Code:

Code:
int led = 1;  //Pin der LED
int adc_low, adc_high;  //Zwischenspeicher für die Ergebnisse des ADC
long adc_result;  //Gesamtergebnis der Messung des ADC
//ab hier neu
unsigned long vcc;  //Versorgungsspannung
char Msg[10];
int h_as_int;

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();

void setup() {    
  pinMode(led, OUTPUT);  

  ADMUX |= (1<<REFS1); //VCC als Referenzspannung für den AD-Wandler
  ADMUX |= (1<<MUX3) | (1<<MUX2) | (1<<MUX1);  //1.1V Referenzspannung als Eingang für ADC
  //ADMUX = (1<<REFS1) | 12;
  delay(10);  //warten bis sich die Referenzspannung eingestellt hat
  ADCSRA |= (1<<ADEN);   //ADC aktivieren

  mySwitch.enableTransmit(3);
  mySwitch.setPulseLength(320);
}



// the loop routine runs over and over again forever:
void loop() {    
  ADCSRA |= (1<<ADSC);  //Messung starten

  while (bitRead(ADCSRA, ADSC));  //warten bis Messung beendet ist
  //Ergebnisse des ADC zwischenspeichern. Wichtig: zuerst ADCL auslesen, dann ADCH
  adc_low = ADCL;
  adc_high = ADCH;

  adc_result = (adc_high<<8) | adc_low; //Gesamtergebniss der ADC-Messung
  //adc_result = adc;
  vcc = 1125300 / adc_result;  //Versorgungsspannung in mV berechnen (1100mV * 1023 = 1125300)

  //wenn Spannung kleiner als 4V
  if (vcc < 4000)
  {
    digitalWrite(led, HIGH);  //schalte LED an
  }
  //wenn größer oder gleich 4V
  else
  {
    digitalWrite(led, LOW);  //schalte LED aus
  }

  delay(500);

  float h = vcc;
  h_as_int = h;
  sprintf (Msg, "%d", h_as_int);
  
  mySwitch.send (Msg);
  delay(1000);  
}

Wenn du hier einen Fehler findest wäre ich dir dankbar

Viele Grüße
Torsten

PS: Das ganze läuft auf einen Attiny85
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.03.2016, 13:37 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2016 14:58 von hotsystems.)
Beitrag #6
RE: Inhalt einer Variable mit per Virtual Wire versenden
(20.03.2016 12:54)toto1975 schrieb:  Wenn du hier einen Fehler findest wäre ich dir dankbar

PS: Das ganze läuft auf einen Attiny85
Ja, grober Fehler. Wink

Nein im Ernst, den Inhalt einer Variablen solltest du mit VirtualWire versenden, nicht mit RCSwitch.
RCSwitch ist in erster Linie zum Schalten gedacht. Z.B. Relais. Licht o.ä.

Sensordaten werden mittels VirtualWire versendet.
Das hattest du doch im ersten Post auch so geschrieben.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.03.2016, 20:08 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2016 20:10 von toto1975.)
Beitrag #7
RE: Inhalt einer Variable mit per Virtual Wire versenden
Ja das ist richtig. Hintergrund ist das ich damit bei Bewegung (mit einem PIR-Sensor) im Raum 2 Steckdosen schalte die nach 5 Minuten ohne eine weitere Bewegung wieder ausgehen. Als Erweiterung soll nun noch eine Prüfung der Akkus oder Batterien erfolgen um eine Warnung bei singender Spannung per Funk abzugeben. Um Platz auf dem Attiny85 zu sparen habe ich versucht das ganze mit RCSwitch zu realisieren.

Ich werde es aber dann wohl mit VirtualWire (auch das schalten) realisieren müssen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.03.2016, 21:41
Beitrag #8
RE: Inhalt einer Variable mit per Virtual Wire versenden
(20.03.2016 20:08)toto1975 schrieb:  Ich werde es aber dann wohl mit VirtualWire (auch das schalten) realisieren müssen.

Auch das Schalten lässt sich mit VirtualWire realisieren. Du kannst auf der Empfängerseite auf Zahlen oder Text auswerten.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Serielle Ansteuerung einer I2C LCD, Darstellung von Zahlen Peter05 7 410 21.05.2019 21:06
Letzter Beitrag: Bitklopfer
  Programmierung einer Uhr keklik10 6 556 22.04.2019 22:45
Letzter Beitrag: GuaAck
  virtual wire empfänger-sender peterfried 30 1.426 17.04.2019 07:21
Letzter Beitrag: Tommy56
  Auslagern von Code aus einer Bibliothek Blende8 6 429 10.04.2019 20:23
Letzter Beitrag: Tommy56
  Wire.requestFrom Blende8 7 491 27.03.2019 15:54
Letzter Beitrag: Blende8
  Char in Int variable wandeln Rockman 5 384 06.03.2019 23:22
Letzter Beitrag: Tommy56
  Variable auf zwei Bytes aufteilen ? huber5093 4 459 05.03.2019 20:17
Letzter Beitrag: Tommy56
  Lokale Variable an loop zurück - Fehler Haukini 3 401 26.02.2019 22:33
Letzter Beitrag: Haukini
  Zahl aus txt-Datei als globale Variable einlesen Lance101 17 852 16.02.2019 14:38
Letzter Beitrag: Tommy56
  Wire.write und Client Socket LiVe 3 512 11.01.2019 13:51
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste