China Nano vs. every

moin moin,
merkwürdiges passiert.

ich bin von einen China NANO auf einen NANO every gewechselt... so weit so gut.
der Code funktioniert augenscheinlich tadellos.
Aber die Hardware schein anders zu funktionieren.
Obwohl die Pin Beschriftung absolut identisch ist.

Es ist ein einfaches Flowmeter mit 5v, GND, und einem Pin zum zählen der Pulse.
das ganz steckt auf einem einfachen Extension Board mit grünen Schraubklemmen.
Also den china Nano raus und den every ein. kurz den Board Typ gewechselt, den code aufgespielt, die serielle Konsole geöffnet, Code läuft, aber keine Messung....

Boards wieder getauscht alles ok..... versteht das einer ? und kann mich bitte aufklären ?

Das ganze ist natürlich nur ein Teil des Projekts, alles Andere funktioniert, SPI Display, Taster, Schalter, Widerstandsmessung usw. Ich habe die Boards nur getauscht um mehr Speicher zur verfügung zu haben.

float cfactor = 5.0;

byte interrupt = 0;
byte sensorPin = 2;
byte pulseCount;
float flowRate;
unsigned int f_ml;
unsigned long t_ml;
unsigned long oldTime;

void setup()
{
  Serial.begin(9600);
  pinMode(sensorPin, INPUT);
  digitalWrite(sensorPin, HIGH);
  attachInterrupt(interrupt, pulseCounter, FALLING);
}

void loop()
{
  if ((millis() - oldTime) > 1000)
  {
    int semic;
    detachInterrupt(interrupt);
    flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / cfactor;
    oldTime = millis();
    f_ml = (flowRate / 60) * 1000;
    t_ml += f_ml;
    Serial.print("Current flow: ");
    Serial.print(int(flowRate));
    Serial.print(".");
    semic = (flowRate - int(flowRate)) * 10;
    Serial.print(semic, DEC) ;
    Serial.print("L/min");
    Serial.print("  Total: ");
    Serial.print(t_ml);
    Serial.println("mL");
    pulseCount = 0;
    attachInterrupt(interrupt, pulseCounter, FALLING);
  }
}

void pulseCounter()
{
  pulseCount++;
}

bei Anschließen kann man nicht viel falsch machen, das ganze hat nur die 3Pins, davon abgesehen tausche ich nur das Board im Sockel

Spannungspegel geprüft?

Der 'Standard' nano und der Nano Every haben ausser dem Namen und der Bauform nicht viel gemein. Auf dem Every ist ein vollkommen anderer Prozessor verbaut. Da ist dann auch die Zuordnung der Pinnummern zu den Interruptnummern anders als beim klassischen Nano. Es ist grundsätzlich ratsam, beim attachInterrupt die Interruptnummer nicht fest einzutragen, sondern die Funktion digitalPinToInterrupt zu nutzen:

attachInterrupt(digitalPinToInterrupt(sensorPin), pulseCounter, FALLING);

Edit: Pinnummer korrigiert

Boards wieder getauscht alles ok… versteht das einer ? und kann mich bitte aufklären ?

anderes Board mit anderem Prozessor. So gesehen - alles ist möglich.

Beschreibe EXAKT was nicht läuft. Was macht das Board nicht, wie stellst du das fest.
Haben die Pins die gleiche Eigenschaften? Checke die Datenblätter.
Interrupt? Sind die gleich?

auf alle Fälle mal die Dokumentation lesen

Syntax
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) (Empfohlen)
attachInterrupt(interrupt, ISR, mode) (Nicht empfohlen)

Microbahner war schneller, aber ich lass das mal.

noiasca:
Microbahner war schneller, aber ich lass das mal.

Doppelt hält besser :wink:

Danke für die schnelle Hilfe !

das hats gefixt :

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)