Boa Noite @Willian Machado a alteração do código para mais canais seria feita da seguinte forma.
Código Alterado para 20 Canais
//==========================>Definição dos pinos e nomes das variáveis
int Led1 = 2;
int Led2 = 3;
int Led3 = 4;
int Led4 = 5;
int Led5 = 6;
int Led6 = 7;
int Led7 = 8;
int Led8 = 9;
int Led9 = 10;
int Led10 = 11;
// Adicionado mais 10 canais para as portas digitais do "Arduino Mega" de 22-31
int Led11 = 22;
int Led12 = 23;
int Led13 = 24;
int Led14 = 25;
int Led15 = 26;
int Led16 = 27;
int Led17 = 28;
int Led18 = 29;
int Led19 = 30;
int Led20 = 31;
int i = 0;
int incomingByte[20]; // <-- alteração para mais 10 canais
void setup()
{
//==========================>Velocidade da comunicação Serial
Serial.begin(9600);
//==========================>Define os pinos como saída
pinMode(Led1, OUTPUT);
pinMode(Led2, OUTPUT);
pinMode(Led3, OUTPUT);
pinMode(Led4, OUTPUT);
pinMode(Led5, OUTPUT);
pinMode(Led6, OUTPUT);
pinMode(Led7, OUTPUT);
pinMode(Led8, OUTPUT);
pinMode(Led9, OUTPUT);
pinMode(Led10, OUTPUT);
// Mais 10 pinos definidos como saída
pinMode(Led11, OUTPUT);
pinMode(Led12, OUTPUT);
pinMode(Led13, OUTPUT);
pinMode(Led14, OUTPUT);
pinMode(Led15, OUTPUT);
pinMode(Led16, OUTPUT);
pinMode(Led17, OUTPUT);
pinMode(Led18, OUTPUT);
pinMode(Led19, OUTPUT);
pinMode(Led20, OUTPUT);
}
void loop()
{
if (Serial.available() >= 20) // <-- Alterado para mais 10 canais
{
for (int i=0; i<20;i++) // <-- Alterado para mais 10 canais
{
incomingByte[i] = Serial.read();
}
// Leituras de Saída // Pinos do Arduino
analogWrite(Led1, incomingByte[0]); // Pino 2
analogWrite(Led2, incomingByte[1]); // Pino 3
analogWrite(Led3, incomingByte[2]); // Pino 4
analogWrite(Led4, incomingByte[3]); // Pino 5
analogWrite(Led5, incomingByte[4]); // Pino 6
analogWrite(Led6, incomingByte[5]); // Pino 7
analogWrite(Led7, incomingByte[6]); // Pino 8
analogWrite(Led8, incomingByte[7]); // Pino 9
analogWrite(Led9, incomingByte[8]); // Pino 10
analogWrite(Led10, incomingByte[9]); // Pino 11
// Adicionados mais 10 canais para leitura
digitalWrite(Led11, incomingByte[10]); // Pino 22
digitalWrite(Led12, incomingByte[11]); // Pino 23
digitalWrite(Led13, incomingByte[12]); // Pino 24
digitalWrite(Led14, incomingByte[13]); // Pino 25
digitalWrite(Led15, incomingByte[14]); // Pino 26
digitalWrite(Led16, incomingByte[15]); // Pino 27
digitalWrite(Led17, incomingByte[16]); // Pino 28
digitalWrite(Led18, incomingByte[17]); // Pino 29
digitalWrite(Led19, incomingByte[18]); // Pino 30
digitalWrite(Led20, incomingByte[19]); // Pino 31
}
}
As alterações a serem feitas são:
Adicionar mais variáveis em "Definição dos pinos e nomes das variáveis".
// Novas variáveis
int Led11 = 22;
int Led12 = 23;
int Led13 = 24;
int Led14 = 25;
int Led15 = 26;
int Led16 = 27;
int Led17 = 28;
int Led18 = 29;
int Led19 = 30;
int Led20 = 31;
Alterar o "int incomingByte[20];" para a quantidade de canais configurados.
int incomingByte[20];
Dentro de "void setup ( )" adicionar os novos 10 canais como saída.
// Mais 10 novos pinos definidos como saída
pinMode(Led11, OUTPUT);
pinMode(Led12, OUTPUT);
pinMode(Led13, OUTPUT);
pinMode(Led14, OUTPUT);
pinMode(Led15, OUTPUT);
pinMode(Led16, OUTPUT);
pinMode(Led17, OUTPUT);
pinMode(Led18, OUTPUT);
pinMode(Led19, OUTPUT);
pinMode(Led20, OUTPUT);
Dentro de "void loop ( )" alterar o "if (Serial.available() >= 20)" e o "for (int i=0; i<20;i++)" para a quantidade de canais configurados.
if (Serial.available() >= 20)
for (int i=0; i<20;i++)
Ainda dentro de "void loop ( )" em "Leituras de Saída" Adicionar mais 10 canais mantendo sempre a ordem do "incomingByte" e repare que trocamos o "analogWrite" para "digitalWrite", como estamos utilizando as portas digitais do Arduino Mega então configuramos ela para "digitalWrite" porque elas são portas digitais.
Feito isso está pronto o seu código agora só compilar para o seu Microcontrolador.
• Código Original 10 Canais Aqui.