Probleme mit sketch

Hallo
Ich habe dass Problem dass mir mein gsm Modul (sim800l) eine gewünschte sms nicht sendet. wenn ich aber in einem anderen Sketch eine test sms sende Sendet es mir die sms
Hier der Code

#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <virtuabotixRTC.h>
#include <Sim800L.h>
#include "HX711.h"


const int LOADCELL_DOUT_PIN = 7;
const int LOADCELL_SCK_PIN = 6;
float gewicht08;
float tara;
float cal = (0.0003092528451);
float gew;
float gewT;
char text[159];
char *text1;




HX711 waage1;
LiquidCrystal_I2C lcd (0x27, 16, 2);
Sim800L GSM (1, 2);
virtuabotixRTC myRTC (3, 4, 5);

void setup()
{


  Serial.begin (9600);
  GSM.begin (4800);
  waage1.begin (LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  lcd.init();
  pinMode(8, INPUT);
  pinMode(9, INPUT);
  pinMode(10, INPUT);
  pinMode(11, OUTPUT);

}


void loop()
{
  lcd.backlight();
  lcd.setCursor (0, 0);
  lcd.print ("Akt. Gewicht");
  lcd.setCursor (0, 1) ;
  //    lcd.print (waage1.read);
  lcd.print (((waage1.read()*cal - tara) - gewT), 1);
  lcd.setCursor (14, 1);
  lcd.print ("kg");

  myRTC.updateTime();
  if (myRTC.hours == 8 ) {
    if (myRTC.minutes == 0) {
      if (myRTC.seconds == 0) {
        gewicht08 = waage1.read() * cal - tara;
        delay (1000);
      }
    }
  }
  if (myRTC.hours == 15) {
    myRTC.updateTime();
    if (myRTC.minutes == 29) {
      digitalWrite(11, HIGH);
      float gewicht20 = waage1.read() * cal - tara;
      sprintf (text, "Gewicht 8Uhr: %f Gewicht 20Uhr: %f", gewicht08 , gewicht20);
      GSM.sendSms( "nummer 1", text);
      GSM.sendSms( "nummer 2", text);
      GSM.sendSms( "nummer 3", text);
      GSM.sendSms( "nummer 4", text);
      delay(10);
      digitalWrite(11, LOW);
      
      delay (60000);

    }
  }



  if ((digitalRead(8) == 1))
  { tara = waage1.read() * cal;
    if (EEPROM.read(2000) != 0)
    { EEPROM.update(2000, tara);
    }
    else {
      EEPROM.put(2000, tara);
    }
    lcd.clear();
  }


  if (digitalRead(9) == 1)
  { gew = waage1.read() * cal - tara;
  }


  if (digitalRead(10) == 1)
  { gewT = (waage1.read() * cal - tara) - gew;

    if (EEPROM.read(0) != 0)
    { EEPROM.update(0, gewT);
    }
    else {
      EEPROM.put(0, gewT);
    }



  }

}

Wäre sehr erfreut wenn mir jemand helfen Könnte

nummer1... sind die Telefonnummern an die es das sms senden soll die möchte ich aber nich online stellen
Joachim

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

an welchem Board willst du Pin D1 für SIM Modul benutzen ?

Ich vermute, du verwendest einen Uno oder Nano.
Somit solltest du für deinen GSM800 einen anderen Pin als den D1 verwenden.
Der (und D0) wird schon vom USB-Wandler verwendet und macht somit Probleme.
Solltest du zu wenig digitale Pins haben, kannst du auch die Pins A0 bis A5 als digitale Pins verwenden. Allerdings auch nur, wenn diese frei sind. Bei der Nutzung von I2C sind A4 und A5 schon belegt.

bitte poste den Test-Sketch der funktioniert.

There is an automatic function for doing this in the Arduino-IDE
just three steps

  1. press Ctrl-T for autoformatting your code
  2. do a rightclick with the mouse and choose "copy for forum"
  3. paste clipboard into write-window of a posting

best regards Stefan

An Arduinos ist der IO-pin 1 die TX-Leitung der seriellen Schnittstelle zum Computer
Wenn du den IO-pin 1 gleichzeitig für etwas anderes benutzen willst dann funktioniert das nicht.

Und ich wäre auch vorsichtig damit in der Entwicklungsphase ständig in den EEPROM zu schreiben. Wenn du da einen bug drin hast der dir 1000 mal pro Sekunde in den EEPROM schreibt dann ist der EEPROM nach 100000 Schreibzyklen / 1000 = 100 Sekunden dauerschreiben ausgelutscht und nicht mehr zu gebrauchen.

Ich würde da lieber gleich einen I2C-FRAM-Chip oder wenigstens einen leicht austauschbaren externen I2C EEPROM nehmen.

I2C FRAM 100 Trillionen Schreibzyklen
https://www.ebay.de/itm/265712924124

vgs

Ok danke vielmals
Lg

Ich habe di pins geändert es funktioniert immer noch nicht

Dann mache das:

Es gibt mehrere Urachenmöglichkeiten
Wir werden schon dahinter kommen an was es liegt.
Man muss das Stück für Stück durchtesten / analysieren.

Was soll ich jetzt machen

#8 lesen

#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <virtuabotixRTC.h>
#include <Sim800L.h>
#include "HX711.h"


const int LOADCELL_DOUT_PIN = 7;
const int LOADCELL_SCK_PIN = 6;
float gewicht08;
float tara;
float cal = (0.0003092528451);
float gew;
float gewT;
char text[159];
char *text1;




HX711 waage1;
LiquidCrystal_I2C lcd (0x27, 16, 2);
Sim800L GSM (2, 11);
virtuabotixRTC myRTC (3, 4, 5);

void setup()
{


  Serial.begin (9600);
  GSM.begin (4800);
  waage1.begin (LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  lcd.init();
  pinMode(8, INPUT);
  pinMode(9, INPUT);
  pinMode(10, INPUT);


}


void loop()
{
  lcd.backlight();
  lcd.setCursor (0, 0);
  lcd.print ("Akt. Gewicht");
  lcd.setCursor (0, 1) ;
  //    lcd.print (waage1.read);
  lcd.print (((waage1.read()*cal - tara) - gewT), 1);
  lcd.setCursor (14, 1);
  lcd.print ("kg");

  myRTC.updateTime();
  if (myRTC.hours == 8 ) {
    if (myRTC.minutes == 0) {
      if (myRTC.seconds == 0) {
        gewicht08 = waage1.read() * cal - tara;
        delay (1000);
      }
    }
  }
  if (myRTC.hours == 19) {
    myRTC.updateTime();
    if (myRTC.minutes == 20) {

      float gewicht20 = waage1.read() * cal - tara;
      sprintf (text, "Gewicht 8Uhr: %f Gewicht 20Uhr: %f", gewicht08 , gewicht20);
      GSM.sendSms( "+393479845908", text);
      GSM.sendSms( "+393495867236", text);
      GSM.sendSms( "+393484338447", text);
      GSM.sendSms( "+393497346046", text);

      delay (60000);

    }
  }



  if ((digitalRead(8) == 1))
  { tara = waage1.read() * cal;
    if (EEPROM.read(2000) != 0)
    { EEPROM.update(2000, tara);
    }
    else {
      EEPROM.put(2000, tara);
    }
    lcd.clear();
  }


  if (digitalRead(9) == 1)
  { gew = waage1.read() * cal - tara;
  }


  if (digitalRead(10) == 1)
  { gewT = (waage1.read() * cal - tara) - gew;

    if (EEPROM.read(0) != 0)
    { EEPROM.update(0, gewT);
    }
    else {
      EEPROM.put(0, gewT);
    }



  }

}
EEPROM.read(2000)

Wie bitte? Wie viel Speicher hat EEPROM von Atmega328?

Es wäre gut mal ein paar wichtige Daten zu nennen:

  • welches Microcontroller-board?

  • wie viel Erfahrung im Programmieren hast du?
    einfache Einteilung

  • eigentlich keine

  • naja so ein bißchen Blink-Sketch habe ich ans laufen bekommen

  • recht viel das ist mein 10tes Arduino Projekt

  • wie viel Erfahrung hast du in Sachen Elektronik?

  • wie von Elektronik muss man auch Ahnung haben?

  • Ich kann Spannung, Strom und Widerstand messen

  • Von Elektronik verstehe ich was

Wenn der funktionierende Sketch der aus post # 11 ist da wird für die serielle Schnittstelle pin 2 und pin 11 verwendet.

Was hast du jetzt in deinem Sketch alles abgeändert?
vgs

Das board ist ein arduino nano every mit atmega4809

Erfahrung ein bisschen blink sketch hat funktioniert

Elektronik kenn mich damit gut aus mein cousin hilft mir damit er ist von beruf Elektriker

Ich habe im code nur dass pin 11 high ind low schaltet weggelassen das war nur ein test ob dass mit der uhrzeit funktioniert und die pins vom gsm modul habe ich geändert

Muss ich beim gsm modul rxd oder txd an pin 2 anbringen

ATmega4809 is a microcontroller featuring the 8-bit AVR® processor with hardware multiplier - running at up to 20 MHz and with up to 48 KB Flash, 6 KB SRAM and 256 bytes of EEPROM

Das heisst EEPROM ist 4 Mal kleiner als Atmega328.
außerdem,

float tara;  // das heisst Variable nimmt 4 Bytes im Speicher
    if (EEPROM.read(2000) != 0)EEPROM.update(2000, tara);  // diese Befehle arbeiten nur mit einem einzigem Byte.
    else EEPROM.put(2000, tara);

Ich habe das nicht ganz verstanden was du damit meinst

was ich sagen will. Du sollst jede Komponente deines Projektes einmal alleine untersuchen und ausprobieren. Sobald du erfolgreich alles getestet hast und die Benutzung verstanden hast, stellst du eine nach den anderen zusammen und prüfst sich selbst ob immernoch alles richtig zusammen arbeitet.

Gsm modul funktioniert
RTC funktioniert auch
HX71 1 auch
Und der i2c display ebenfalls