serialBegin

serialBegin — Ouvre un port série.

Description

Ouvre un port série pour arduino.

Syntaxe

iPort serialBegin SPortName [, ibaudRate]

Initialisation

SPortName -- nom du port

ibaudrate -- vitesse de transmission, 9600 bauds par défaut.

Exemples

Voici un exemple de l'opcode serialBegin. Il utilise le fichier serialBegin.csd.

Exemple 869. Exemple de l'opcode serialBegin.

Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-n  ;;;no output
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o serialBegin.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr  = 44100
ksmps = 500 ; the default krate can be too fast for the arduino to handle
nchnls = 2
0dbfs  = 1

instr 1

iPort serialBegin "/dev/cu.usbmodemfa131", 9600			;connect to the arduino with baudrate = 9600

kGain init 16							;read our knob value
kVal serialRead iPort
if (kVal != -1) then
    kGain = kVal/128
endif

aSig in								;get our audio input and get its rms
kRms rms aSig*kGain

kRms = kRms*kRms*255						;scale the rms to a good value for the LED and send it out
serialWrite iPort, (kRms < 255 ? kRms : 255)			;must be in range: 0-255

endin
</CsInstruments>
<CsScore>
f 1 0 1024 10 1 1 1 1 1 1

i 1 0 200
e
</CsScore>
</CsoundSynthesizer>


Le code Arduino correspondant est :

void setup() {
  // active la communication serie
  Serial.begin(9600);

  // declare la pin 9 comme sortie :
  pinMode(9, OUTPUT);
}

void loop() {
  // n'agir que si l'on recoit quelque chose (doit être au taux-k de csound)
  if (Serial.available()) {
    // fixe la brillance de la LED (connectée à la pin 9) a notre valeur d'entree
    int brightness = Serial.read();
    analogWrite(9, brightness);

    // recupere la valeur du bouton rotatif et l'envoyer à csound
    int sensorValue = analogRead(A0);
    Serial.write(sensorValue/4); // ramene dans l'intervalle d'un octet (0-255)
  }     
}
.....

Voir aussi

serialEnd, serialWrite_i, serialWrite, serialRead, serialPrint, serialFlush.

Crédits

Auteur : Matt Ingalls
2011

Nouveau dans la version 5.14