Go Down

Topic: Arduino Mega mit W5100 funktioniert nicht (Read 4368 times) previous topic - next topic

Tommy56

Ich glaube, Du solltest Dir erst mal klar darüber werden, was Du genau erreichen willst.
Du übergibst einen Helligkeitswert. Nehmen wir mal an 128. Was soll dann passieren?
Später übergibst Du 180. Was soll jetzt passieren?

Soll er vom alten Wert auf den neuen faden und dort bleiben?
Soll er laufend hoch und runter faden - Du wertest dabei die Helligkeit nicht aus?
Oder noch etwas anderes?

Danach richtet sich die Herangehensweise.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

power-dodge

Hallo Tommy,

danke Dir für die Antwort!

Also eine Modbusadresse soll die Helligkeit vorgeben.
Genau zu diesem Wert soll hoch oder runter dimmt werden und dort bleiben.
Wird bei herunter dimmen ein höherer Wert eintreffen zu Modbusadresse,
dann soll herunter dimmen abgebrochen werden und hoch zu diesem Wert hoch
gedimmt werden.

So wäre meine Vorstellung, bin wohl auf dem falschen Weg nicht?

Danke noch mal für die mühe, Ihr seid echt super!

Gruß

Tommy56

Geht, ist aber etwas umständlicher.

1. alten Wert der Helligkeit merken
2. Nur wenn ein anderer Wert kommt, diesen bearbeiten
3. Vorzeichen bestimmen (alter Wert ist größer, dann -, sonst +)
4. Helligkeit dimmen. Wenn aktuellerWert+/- Änderung > oder < als Zielwert - diesen setzen
5. merken, ob das Dimmen noch läuft
6. Wenn ja, dann den aktuellen Wert als alten Wert setzen

So mal grob auf die Schnelle.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

power-dodge

Danke Tommy,

gibt es eine gute Quelle mit Beispielen oder Übungen dazu?
Weil so aus dem Ärmel werde ich das nicht runter tippen können.

Werde mich gleich mit Google erstmals auseinander setzen.
Oder gibt es hier im Forum schon mal etwas ähnliches?
Manchmal weis man nicht nach was man suchen soll.

Danke noch mal für die Tipps!!!

Grüße

Alex

Tommy56

Da wirst Du wenig finden. Baue es schrittweise auf.
Ich habe hier mal in meiner Anfangszeit sowas über die serielle Schnittstelle gemacht. Evtl. kannst Du Dir da ein paar Anregungen holen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

power-dodge

Hallo Tommy,

danke für den Link... Nun ja werde es mir ansehen, da muss man aber programmieren studiert haben!
Ich mein das im guten, echt Respekt. Werde dann es mal ansehen und versuchen zu begreifen.
Zumindest vielleicht nen Teil von...

Gruß

Alex

Tommy56

Muss man nicht, ich habe mir das auch selbst beigebracht.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

agmue

#52
Feb 03, 2018, 11:22 pm Last Edit: Feb 03, 2018, 11:24 pm by agmue
So mal grob auf die Schnelle.
Viele Voraussetzungen wie Ethernet fehlen mir, aber mit der seriellen Schnittstelle kann man es als Anregung eventuell simulieren:

Code: [Select]
int fadeAmount = 5;    // how many points to fade the LED by
unsigned long currentTime;
unsigned long loopTime;
int brightness, altModbuswert, aktModbuswert;

byte modbusersatz() {
  byte wert = altModbuswert;
  if (Serial.available())
  {
    wert = Serial.parseInt();
  }
  return wert;
}

void loop()  {
  currentTime = millis();
  altModbuswert = aktModbuswert;
  aktModbuswert = modbusersatz();  // stattdassen Mb.R[3]
  if (altModbuswert != aktModbuswert)
  {
    if (brightness < aktModbuswert) {
      fadeAmount = 5;
    } else {
      fadeAmount = -5;
    }
    Serial.print(F("\nneuer Wert: "));
    Serial.println(aktModbuswert);
  }
  if (currentTime - loopTime >= 40) {
    loopTime = currentTime;  // Updates loopTime
    if ((brightness < aktModbuswert && fadeAmount > 0) || (brightness > aktModbuswert && fadeAmount < 0)) {
      brightness = brightness + fadeAmount;
      analogWrite(10, brightness);
      Serial.print(brightness);
      Serial.print(' ');
    }
  }
}

void setup()
{
  Serial.begin(9600);
  Serial.println(F("PWM-Wert eingeben"));
  currentTime = millis();
  loopTime = currentTime;
}
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

power-dodge

Hey Danke für die Hilfe,


sieht ja gut aus! Leider hab ich es noch nicht zum laufen bekommen.

So  habe  ich da zusammen gelegt:

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

#include "Mudbus.h"

int fadeAmount = 5;    // how many points to fade the LED by
unsigned long currentTime;
unsigned long loopTime;
int brightness, altModbuswert, aktModbuswert;

byte modbusersatz() {
  byte wert = altModbuswert;
  if (Serial.available())
  {
    wert = Serial.parseInt();
  }
  return wert;
}

Mudbus Mb;
//Function codes 1(read coils), 3(read registers), 5(write coil), 6(write register)
//signed int Mb.R[0 to 125] and bool Mb.C[0 to 128] MB_N_R MB_N_C
//Port 502 (defined in Mudbus.h) MB_PORT

void setup()

  Serial.begin(9600);
  Serial.println(F("PWM-Wert eingeben"));
  currentTime = millis();
  loopTime = currentTime;
 
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 178, 70 };
  uint8_t gateway[] = { 192, 168, 178, 1 };
  uint8_t subnet[]  = { 255, 255, 255, 0 };
  Ethernet.begin(mac, ip, gateway, subnet);


  //PWM Frequenz
  //0×01  1      31.374 KHz
  //0×02  8      3.921 Khz
  //0×03  64     490.1 Hz            // default
  //0×04  256    122.5 Hz
  //0×05  1024   30.63 Hz
  //http://playground.arduino.cc/Main/TimerPWMCheatsheet

  TCCR1A = (TCCR1A & 0xF8) | 0x01;
  TCCR0A = (TCCR0A & 0xF8) | 0x01;
  TCCR0B = (TCCR0B & 0xF8) | 0x01;
  TCCR2B = (TCCR2B & 0xF8) | 0x01;
 
  pinMode(2, OUTPUT); // Pin 2 des Mega
}

void loop(){
  Mb.Run();
  currentTime = millis();
  altModbuswert = aktModbuswert;
  aktModbuswert = modbusersatz();  // stattdassen Mb.R[3]
  if (altModbuswert != aktModbuswert)
  {
    if (brightness < aktModbuswert) {
      fadeAmount = 5;
    } else {
      fadeAmount = -5;
    }
    Serial.print(F("\nneuer Wert: "));
    Serial.println(aktModbuswert);
  }
  if (currentTime - loopTime >= 40) {
    loopTime = currentTime;  // Updates loopTime
    if ((brightness < aktModbuswert && fadeAmount > 0) || (brightness > aktModbuswert && fadeAmount < 0)) {
      brightness = brightness + fadeAmount;
      analogWrite(2, brightness);
      Serial.print(brightness);
      Serial.print(' ');
    }
  }
}

 


Geändert habe ich hier auf Pin2:

Code: [Select]
analogWrite(2, brightness);

Was soll ich hier eintragen:?

Code: [Select]
aktModbuswert = modbusersatz();  // stattdassen Mb.R[3]

Mb.R[3] an erster Stelle bringt nichts, an zweiter kommt Fehlermeldung:

Code: [Select]
expression cannot be used as a function

Werde gleich noch weiter probieren.

Gruß

Alex

power-dodge

#54
Feb 04, 2018, 07:12 am Last Edit: Feb 04, 2018, 07:56 am by power-dodge
Hallo,

über seriellen Monitor funktioniert es prächtig!!!
Danke Dir dafür!!!

Hatte paar mal nach hoch laden, Fehler beim seriellen Monitor.
Wenn aber auch der W5100 angeschlossenen ist, im seriellen
Monitor  kommen keine Aufforderungen "PWM Wert eingeben".
Ist dieser abgeklemmt dann kommen diese. Ist aber gar nicht notwendig.

Wie ich sehe wird wohl der Mega nicht genug Speicher haben!?
Oder irre ich mich da? Denn es sind 12 PWM Ausgänge die ich
so anfahren wollte:

Code: [Select]
Globale Variablen verwenden 1168 Bytes (14%) des dynamischen Speichers, 7024 Bytes für lokale Variablen verbleiben. Das Maximum sind 8192 Bytes.

Gruß

Alex

noiasca

Wie ich sehe wird wohl der Mega nicht genug Speicher haben!?
Oder irre ich mich da? Denn es sind 12 PWM Ausgänge die ich
so anfahren wollte:

Code: [Select]
Globale Variablen verwenden 1168 Bytes (14%) des dynamischen Speichers, 7024 Bytes für lokale Variablen verbleiben. Das Maximum sind 8192 Bytes.


da glaube ich eher dass du RAM verschwendest!
hab nur diesen Schnipsel gesehen
Code: [Select]

Serial.print("fade Pin1 ");


Wie schauts mit Flash aus? Wenn noch genug Flash da ist alle konstanten Texte mit dem Flash-Makro ins Flash geben und RAM sparen!(!!)
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

agmue

#56
Feb 04, 2018, 10:08 am Last Edit: Feb 04, 2018, 01:59 pm by agmue
Was soll ich hier eintragen:?

Code: [Select]
aktModbuswert = modbusersatz();  // stattdassen Mb.R[3]
Meine Vorstellung:

Code: [Select]
aktModbuswert = Mb.R[3]
und die ganze Funktion modbusersatz löschen.

Wie ich sehe wird wohl der Mega nicht genug Speicher haben!?
Oder irre ich mich da? Denn es sind 12 PWM Ausgänge die ich
so anfahren wollte:
Kannst Du probieren. Ich habe meinen Vorschlag ohne weitere Optimierung auf 12 Ausgänge erweitert. Wenn Du Deine Ethernet-Sachen einbindest, weißt Du es.

Code: [Select]
// getestet mit Mega2560
const byte ausgaenge[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
byte ausgang;
const byte PWM = sizeof(ausgaenge);
int8_t fadeAmount[PWM];    // how many points to fade the LED by
unsigned long currentTime;
unsigned long loopTime;
int brightness[PWM], altModbuswert[PWM], aktModbuswert[PWM];

int modbusersatz() {
  static int wert = 127;
  if (Serial.available())
  {
    wert = Serial.parseInt();
    Serial.print(F("neuer Wert: "));
    Serial.println(wert);
  }
  return wert;
}

void loop()  {
  currentTime = millis();
  altModbuswert[ausgang] = aktModbuswert[ausgang];
  aktModbuswert[ausgang] = modbusersatz();  // stattdassen Mb.R[3]
  if (altModbuswert[ausgang] != aktModbuswert[ausgang])
  {
    if (brightness[ausgang] < aktModbuswert[ausgang]) {
      fadeAmount[ausgang] = 5;
    } else {
      fadeAmount[ausgang] = -5;
    }
  }
  if (currentTime - loopTime >= 40) {
    loopTime = currentTime;  // Updates loopTime
    for (byte j = 0; j < PWM; j++)
    {
      if ((brightness[j] < aktModbuswert[j] && fadeAmount[j] > 0) || (brightness[j] > aktModbuswert[j] && fadeAmount[j] < 0)) {
        brightness[j] += fadeAmount[j];
        analogWrite(ausgaenge[j], brightness[j]);
      }
      //Serial.println();
    }
  }
  ausgang++;
  ausgang = ausgang % PWM;
}

void setup()
{
  Serial.begin(9600);
  Serial.println(F("PWM-Wert eingeben"));
  for (byte j = 0; j < PWM; j++)
  {
    fadeAmount[j] = 5;
  }
  currentTime = millis();
  loopTime = currentTime;
}
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

power-dodge

Hallo,

vielen vielen Dank für Deine Hilfe!

Bei Deinem Beispiel ohne Ethernet, habe ich ausprobiert.
Beim ersten mal gab es wieder einen Fehler mit seriellen Monitor,
beim 2 mal flashen ging es!

Dort veränderte dein Programm die helligkeit, bei 0 war alles ok und
bei 255. Dazwischen pulsierte immer der Verbraucher, ob er Herzschlag hätte.
Dimmte hoch oder runter auch ruckartiger, bei Deinem ersten Sketch war
es perfekt!

Nun mit meinem Netzwerk da,  wenn etwas über Modbus kommt dimmt es gar nicht.
Schreibt die Werte sofort in den Pin2.

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

#include "Mudbus.h"

// getestet mit Mega2560
const byte ausgaenge[] = {2, 3, 4, 5, 6, 7, 8, 9, 45, 11, 12, 13};
byte ausgang;
const byte PWM = sizeof(ausgaenge);
int8_t fadeAmount[PWM];    // how many points to fade the LED by
unsigned long currentTime;
unsigned long loopTime;
int brightness[PWM], altModbuswert[PWM], aktModbuswert[PWM];

int modbusersatz() {
  static int wert = 127;
  if (Serial.available())
  {
    wert = Serial.parseInt();
    Serial.print(F("neuer Wert: "));
    Serial.println(wert);
  }
  return wert;
}


Mudbus Mb;
//Function codes 1(read coils), 3(read registers), 5(write coil), 6(write register)
//signed int Mb.R[0 to 125] and bool Mb.C[0 to 128] MB_N_R MB_N_C
//Port 502 (defined in Mudbus.h) MB_PORT

void setup()
{
  Serial.begin(9600);
  Serial.println(F("PWM-Wert eingeben"));
  for (byte j = 0; j < PWM; j++)
  {
    fadeAmount[j] = 5;
  }
  currentTime = millis();
  loopTime = currentTime;
 
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 178, 70 };
  uint8_t gateway[] = { 192, 168, 178, 1 };
  uint8_t subnet[]  = { 255, 255, 255, 0 };
  Ethernet.begin(mac, ip, gateway, subnet);


  //PWM Frequenz
  //0×01  1      31.374 KHz
  //0×02  8      3.921 Khz
  //0×03  64     490.1 Hz            // default
  //0×04  256    122.5 Hz
  //0×05  1024   30.63 Hz
  //http://playground.arduino.cc/Main/TimerPWMCheatsheet

  TCCR1A = (TCCR1A & 0xF8) | 0x01;
  TCCR0A = (TCCR0A & 0xF8) | 0x01;
  TCCR0B = (TCCR0B & 0xF8) | 0x01;
  TCCR2B = (TCCR2B & 0xF8) | 0x01;
 
  pinMode(2, OUTPUT); // Pin 2 des Mega
}


void loop()

{
  Mb.Run();{

  //PWM Ausgänge:
  //Pin2
  currentTime = millis();
  altModbuswert[ausgang] = aktModbuswert[ausgang];
  aktModbuswert[ausgang] = Mb.R[2];  // stattdassen Mb.R[2]
  if (altModbuswert[ausgang] != aktModbuswert[ausgang])
  {
    if (brightness[ausgang] < aktModbuswert[ausgang]) {
      fadeAmount[ausgang] = 5;
    } else {
      fadeAmount[ausgang] = -5;
    }
  }
  if (currentTime - loopTime >= 40) {
    loopTime = currentTime;  // Updates loopTime
    for (byte j = 0; j < PWM; j++)
    {
      if ((brightness[j] < aktModbuswert[j] && fadeAmount[j] > 0) || (brightness[j] > aktModbuswert[j] && fadeAmount[j] < 0)) {
        brightness[j] += fadeAmount[j];
        analogWrite(ausgaenge[j], brightness[j]);
      }
      //Serial.println();
    }
  }
  ausgang++;
  ausgang = ausgang % PWM;
  }
 
}


Davor Dein Sketch probiere ich gleich aus.

Danke Dir noch mal sehr für die Hilfe.

Gruß

Alex

power-dodge

Hi,

mit dem vorherigen Beispiel funktioniert es perfekt über Modbus,
wenn die Werte kommen macht es was es soll!!!

Wie sinnvoll würde man auf weitere Pins dies erweitern?

Seriellen Monitor an sich werde ich später gar nicht nutzen,
ich verstehe schon das Du es dort über ein Umweg gehst.

Ach ja der Code:

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

#include "Mudbus.h"

int fadeAmount = 5;    // how many points to fade the LED by
unsigned long currentTime;
unsigned long loopTime;
int brightness, altModbuswert, aktModbuswert;

byte modbusersatz() {
  byte wert = altModbuswert;
  if (Serial.available())
  {
    wert = Serial.parseInt();
  }
  return wert;
}


Mudbus Mb;
//Function codes 1(read coils), 3(read registers), 5(write coil), 6(write register)
//signed int Mb.R[0 to 125] and bool Mb.C[0 to 128] MB_N_R MB_N_C
//Port 502 (defined in Mudbus.h) MB_PORT

void setup(){
  Serial.begin(9600);
  Serial.println(F("PWM-Wert eingeben"));
  currentTime = millis();
  loopTime = currentTime;
 
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 178, 70 };
  uint8_t gateway[] = { 192, 168, 178, 1 };
  uint8_t subnet[]  = { 255, 255, 255, 0 };
  Ethernet.begin(mac, ip, gateway, subnet);


  //PWM Frequenz
  //0×01  1      31.374 KHz
  //0×02  8      3.921 Khz
  //0×03  64     490.1 Hz            // default
  //0×04  256    122.5 Hz
  //0×05  1024   30.63 Hz
  //http://playground.arduino.cc/Main/TimerPWMCheatsheet

  TCCR1A = (TCCR1A & 0xF8) | 0x01;
  TCCR0A = (TCCR0A & 0xF8) | 0x01;
  TCCR0B = (TCCR0B & 0xF8) | 0x01;
  TCCR2B = (TCCR2B & 0xF8) | 0x01;
 
  pinMode(2, OUTPUT); // Pin 2 des Mega
}


void loop()

{
  Mb.Run();{

  currentTime = millis();
  altModbuswert = aktModbuswert;
  aktModbuswert = Mb.R[2];  // stattdassen Mb.R[2]
  if (altModbuswert != aktModbuswert)
  {
    if (brightness < aktModbuswert) {
      fadeAmount = 5;
    } else {
      fadeAmount = -5;
    }
    Serial.print(F("\nneuer Wert: "));
    Serial.println(aktModbuswert);
  }
  if (currentTime - loopTime >= 1000) {
    loopTime = currentTime;  // Updates loopTime
    if ((brightness < aktModbuswert && fadeAmount > 0) || (brightness > aktModbuswert && fadeAmount < 0)) {
      brightness = brightness + fadeAmount;
      analogWrite(2, brightness);
      Serial.print(brightness);
      Serial.print(' ');
    }
  }
}
}



Und so in etwa hatte ich es einfach umgeleitet gehabt, also mein vorheriger Code:

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

#include "Mudbus.h"

Mudbus Mb;
//Function codes 1(read coils), 3(read registers), 5(write coil), 6(write register)
//signed int Mb.R[0 to 125] and bool Mb.C[0 to 128] MB_N_R MB_N_C
//Port 502 (defined in Mudbus.h) MB_PORT

void setup()
{
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 178, 70 };
  uint8_t gateway[] = { 192, 168, 178, 1 };
  uint8_t subnet[]  = { 255, 255, 255, 0 };
  Ethernet.begin(mac, ip, gateway, subnet);


  //PWM Frequenz
  //0×01  1      31.374 KHz
  //0×02  8      3.921 Khz
  //0×03  64     490.1 Hz            // default
  //0×04  256    122.5 Hz
  //0×05  1024   30.63 Hz
  //http://playground.arduino.cc/Main/TimerPWMCheatsheet

  TCCR1A = (TCCR1A & 0xF8) | 0x01;
  TCCR0A = (TCCR0A & 0xF8) | 0x01;
  TCCR0B = (TCCR0B & 0xF8) | 0x01;
  TCCR2B = (TCCR2B & 0xF8) | 0x01;
 
  pinMode(2, OUTPUT); // Pin 2 des Mega
  pinMode(3, OUTPUT); // Pin 3 des Mega
  pinMode(4, OUTPUT); // Pin 4 des Mega
  pinMode(5, OUTPUT); // Pin 5 des Mega
  pinMode(6, OUTPUT); // Pin 6 des Mega
  pinMode(7, OUTPUT); // Pin 7 des Mega
  pinMode(8, OUTPUT); // Pin 8 des Mega
  pinMode(9, OUTPUT); // Pin 9 des Mega
  pinMode(11, OUTPUT); // Pin 11 des Mega
  pinMode(45, OUTPUT); // Pin 45 des Mega, Led: 10 auf der Platine und Modbus
  pinMode(12, OUTPUT); // Pin 12 des Mega
  pinMode(13, OUTPUT); // Pin 13 des Mega
}


void loop()

{
  Mb.Run();

  //PWM Ausgänge:
  //Pin2
  analogWrite(2, Mb.R[2]);
  //Pin3
  analogWrite(3, Mb.R[3]);
  //Pin4
  analogWrite(4, Mb.R[4]);
  //Pin5
  analogWrite(5, Mb.R[5]);
  //Pin6
  analogWrite(6, Mb.R[6]);
  //Pin7
  analogWrite(7, Mb.R[7]);
  //Pin8
  analogWrite(8, Mb.R[8]);
  //Pin9
  analogWrite(9, Mb.R[9]);
  //Pin45
  analogWrite(45, Mb.R[10]);
  //Pin11
  analogWrite(11, Mb.R[11]);
  //Pin12
  analogWrite(12, Mb.R[12]);
  //Pin13
  analogWrite(13, Mb.R[13]);

  // Digitale Ausgänge herauslesen und zu Modbus übergeben:
  //Pin31
  Mb.R[14] = digitalRead(31);
  //Pin33
  Mb.R[15] = digitalRead(33);
  //Pin35
  Mb.R[16] = digitalRead(35);
  //Pin37
  Mb.R[17] = digitalRead(37);
  //Pin39
  Mb.R[18] = digitalRead(39);
  //Pin41
  Mb.R[19] = digitalRead(41);
  //Pin43
  Mb.R[20] = digitalRead(43);
  //Pin47
  Mb.R[21] = digitalRead(47);
  //Pin49
  Mb.R[22] = digitalRead(49);
  //Pin53
  Mb.R[23] = digitalRead(53);

  // Analoge Ausgänge herauslesen und zu Modbus übergeben:
  //Pin Analog 0
  Mb.R[24] = analogRead(0);
  //Pin Analog 1
  Mb.R[25] = analogRead(1);
  //Pin Analog 2
  Mb.R[26] = analogRead(2);
  //Pin Analog 3
  Mb.R[27] = analogRead(3);
  //Pin Analog 4
  Mb.R[28] = analogRead(4); 
 
}


Hier lese ich wie man sieht auch noch analoge und digitale Ausgänge.

Danke Dir noch mal!

Gruß

agmue

#59
Feb 04, 2018, 07:50 pm Last Edit: Feb 04, 2018, 09:28 pm by agmue
Code: [Select]
const byte ausgaenge[] = {2, 3, 4, 5, 6, 7, 8, 9, 45, 11, 12, 13};
Nicht alle Ausgänge des Mega2560 können PWM, Nummer 45 beispielsweise nicht.

Die drei 44,45 und 46 hatte ich bislang übersehen :-[
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Go Up