Analogen Pin auslesen / schalten mit Arduino Firmata

Hallo,

ich bin mir nicht wirklich sicher, ob ich die Frage nicht lieber im Processing-Forum stellen sollte:

Wie kann ich den Wert eines analogen Pins auslesen, um ihn in Processing verarbeiten zu können? Gleiches gilt für das analoge Schalten eines Pins. Beim Einlesen würde ich gern mit einem Pull-up-Widerstand arbeiten. Mein Code sieht - auf das Wesentliche reduziert - so aus:

import processing.serial.*;
import cc.arduino.*;
Arduino Arduino1;
int pin = 11;

void setup() {
  Arduino1 = new Arduino(this, Arduino.list()[0], 57600);
  Arduino1.pinMode(pin, Arduino.INPUT_PULLUP);
}

void draw() {
  
  println(Arduino1.analogRead(pin));
}

Gruß
Paul

Techniker89:
... Gleiches gilt für das analoge Schalten eines Pins. ...

Was meinst Du mit „analog Schalten“? Wenn Du einen Wert in einen Widerstandswert umwandeln möchtest: Es gibt DA-Wandler, die sowas machen.

Techniker89:
... Arduino1 = new Arduino(this, Arduino.list()[0], 57600); ...

Die avrlibc kennt kein „new“. Derartiger Code ist mit Arduino nicht möglich.

Gruß

Gregor

gregorss:
Was meinst Du mit „analog Schalten“?

analogWrite(pin, wert);

gregorss:
Die avrlibc kennt kein „new". Derartiger Code ist mit Arduino nicht möglich.

Das oben ist mein Code in Processing. Auf dem Arduino (Mega 2560) liegt StandardFirmataPlus.

Techniker89:
analogWrite(pin, wert);

Damit erzeugst Du auf einem entsprechenden Pin ein PWM-Signal. Ob Du das direkt in einen analogen Spannungs- oder Widerstandswert umwandeln kannst, weiß ich nicht. Wenn Du ersteres möchtest, müsstest Du mit einem Kondensator hinkommen. Gemacht habe ich sowas bislang allerdings nicht, da müssen andere helfen.

Gruß

Gregor

gregorss:
Damit erzeugst Du auf einem entsprechenden Pin ein PWM-Signal.

Wir reden aneinander vorbei, denn genau das will ich ja. Ich habe mich vielleicht ein bisschen komisch ausgedrückt.

Je mehr ich drüber nachdenke, desto mehr glaube ich, dass das doch eher ins Processing-Forum gehört.

gregorss:
Die avrlibc kennt kein „new“. Derartiger Code ist mit Arduino nicht möglich.

New kommt von der Arduiono IDE. Das ist ein Operator den man überladen kann:

void *operator new(size_t size) {
  return malloc(size);
}

void *operator new[](size_t size) {
  return malloc(size);
}

void operator delete(void * ptr) {
  free(ptr);
}

void operator delete[](void * ptr) {
  free(ptr);
}

Serenifly:
New kommt von der Arduiono IDE. Das ist ein Operator den man überladen kann:

Oha. Das wusste ich noch nicht.

Gruß

Gregor

Wahrscheinlich kennen sich mehr User im Processing Forum mit Processing aus als hier.
Hast Du in den Beispielen die mit der Firmata Bibliothek mitgeliefert werden schon nachgeschauen?
Grüße Uwe

Techniker89:
Je mehr ich drüber nachdenke, desto mehr glaube ich, dass das doch eher ins Processing-Forum gehört.

Ja, ziemlich sicher.