Go Down

Topic: Arduino Mega 2560 + Pure Data (Firmata 2.2 & Pduino 0.5beta8) (Read 888 times) previous topic - next topic

Salve ragazzi, avrei bisogno di usare un arduino mega con pure data, e attraverso pduino ci sono in mezza parte riuscito... pduino (0.5beta8) mi da il supporto per i soli primi 13 pin digitali, ma a me servono tutti e 53 pin digitali... credo che il problema sia dello sketch su arduino, poiche sto usando l'esempio "SimpleDigitalFirmata" dalla libreria degli esempi di arduino...
Ho aggiornato sia firmata (2.2) che pduino (0.5beta8)...

Uhm, non so se possa servire, ma arduino mega me lo rileva come una interfaccia network O_O

Se può servire, sto su mac 10.6.7

Riporto il codice dello sketch se può servire
Code: [Select]
/* Supports as many digital inputs and outputs as possible.
*
* This example code is in the public domain.
*/
#include <Firmata.h>

byte previousPIN[TOTAL_PORTS];  // PIN means PORT for input
byte previousPORT[TOTAL_PORTS];

void outputPort(byte portNumber, byte portValue)
{
    // only send the data when it changes, otherwise you get too many messages!
    if (previousPIN[portNumber] != portValue) {
        Firmata.sendDigitalPort(portNumber, portValue);
        previousPIN[portNumber] = portValue;
    }
}

void setPinModeCallback(byte pin, int mode) {
    if (IS_PIN_DIGITAL(pin)) {
        pinMode(PIN_TO_DIGITAL(pin), mode);
    }
}

void digitalWriteCallback(byte port, int value)
{
    byte i;
    byte currentPinValue, previousPinValue;

    if (port < TOTAL_PORTS && value != previousPORT[port]) {
        for(i=0; i<8; i++) {
            currentPinValue = (byte) value & (1 << i);
            previousPinValue = previousPORT[port] & (1 << i);
            if(currentPinValue != previousPinValue) {
                digitalWrite(i + (port*8), currentPinValue);
            }
        }
        previousPORT[port] = value;
    }
}

void setup()
{
    Firmata.setFirmwareVersion(0, 1);
    Firmata.attach(DIGITAL_MESSAGE, digitalWriteCallback);
    Firmata.attach(SET_PIN_MODE, setPinModeCallback);
    Firmata.begin(57600);
}

void loop()
{
    byte i;

    for (i=0; i<TOTAL_PORTS; i++) {
        outputPort(i, readPort(i));
    }

    while(Firmata.available()) {
        Firmata.processInput();
    }
}


Anche solo il dirmi cosa devo cercare e/o cosa devo modificare mi andrebbe più che bene :D
Grazie mille :D

non avevo fatto caso che firmata è uguale per la comunicazione con il computer in generale, ma resta il fatto che non riesco a capire come posso utilizzare tutte le porte (digitali) di arduino con il computer... mi sto analizzando il codice ma non ne riesco a venire a capo XD

Magari qualcuno sa come agisce firmata e come "mappa" tutti i piedini della board?

Go Up