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.

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.

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.

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.

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
  Ausschaltverzögerung bei einer PV Heizung Hans_Maulwurf 27 698 29.11.2016 23:38
Letzter Beitrag: georg01
  Innenwiderstand einer Batterie (Rundzelle 1,5V) Einsteiger94 2 204 24.07.2016 11:42
Letzter Beitrag: SkobyMobil
  Mega: Hardware i2c bus speed (Wire.) verändern? HaWe 10 2.911 14.07.2016 20:09
Letzter Beitrag: Mathias
  Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern TimeMen 10 463 03.07.2016 09:00
Letzter Beitrag: Binatone
  Brauche etwas Hilfe bei der Umsetzung einer Idee raspido 3 526 23.04.2016 10:26
Letzter Beitrag: rkuehle
  I2C Ansteuerung einer MSM3 (elv mp3 Box) Voreifel 2 310 09.04.2016 17:56
Letzter Beitrag: Voreifel
  Problem: SDFat - Das Ende einer Datei finden und Schleife beenden MartinK 4 486 01.04.2016 05:49
Letzter Beitrag: MartinK
  char* inhalt in eine Datei auf SD-Karte schreiben MartinK 0 338 30.03.2016 16:42
Letzter Beitrag: MartinK
  Problem: RFID code mit Inhalt einer Textdatei auf einer SD Karte vergleichen MartinK 6 505 29.03.2016 16:45
Letzter Beitrag: MartinK
  Pin anhand Variable schalten ! b3ta 13 824 12.01.2016 08:30
Letzter Beitrag: b3ta

Gehe zu:


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