Ayuda para juntar dos códigos Arduino

Tengo una placa Arduino R3 y la uso como display, pero quiero meterle un motor de vibración, lo que pasa esque tengo que unir los 2 codigos y no se como hacerlo, si alguien puede echarme una mano le estaría muy agradecido, supongo que sera muy sencillo, pero tengo muy pocas nociones de esto. Aquí expongo los dos códigos a unir. Los dos códigos, funcionan con servidores diferentes.

Muchas gracias!

const int outpin = 3;
 
void setup() {
  Serial.begin(9600);
  pinMode(outpin, OUTPUT);
}
 
void loop() {
  if (Serial.available()) {
    int inByte = Serial.read();
    digitalWrite(outpin, inByte);
  }
}





/*
DX SLI iRacing Arduino Project
Author: Mark Silverwood

Using TM1638 library from Ricardo Batista <rjbatista at gmail dot com>

This Arduino Sketch creates a simple serial interface for the SLI unit.
This Sketch was generated on: 4/26/2016
This Sketch is for a single (1) Display Unit Configuration

 */

#include <InvertedTM1638.h>

//////Setup Here
#define dataPin 8
#define clockPin 9
#define strobePin1 7
#define NumberUnits 1
#define NumberTM1638Units 1
//////Setup Finished

#define startByte1 255
#define startByte2 37
#define endByte 180
#define messageLength 16

InvertedTM1638 module1(dataPin,clockPin,strobePin1,false,0);

//// Variable Declarations
word leds; 
byte segments[8], TM1640segments[16], redLeds, greenLeds, intensity, unit, sum, i, readCount, checkerPosition;
byte buttons[NumberTM1638Units], oldbuttons[NumberTM1638Units], lastButtonSend[NumberTM1638Units];
long lastCheck, debounceDelay = 100;
boolean sendButtons = false;
byte messageHolder[messageLength], message[messageLength-4], messagePosition = -1;

void setup() {
Serial.begin(14400);
for(int u = 0; u < NumberTM1638Units; u++)
{
oldbuttons[u] = 0;
}
intensity = 0;
lastCheck = millis();}

void loop() {
buttonsCheck();
if (Serial.available() > 0){
messagePosition++;
if(messagePosition == messageLength) messagePosition = 0;
messageHolder[messagePosition] = Serial.read();
messageChecker();
}
}

void messageChecker()
{
checkerPosition = (messagePosition == 0) ? messageLength-1 : messagePosition - 1;
if(messageHolder[checkerPosition] != endByte) return; //end byte
checkerPosition = (messagePosition == messageLength -1) ? 0 : messagePosition + 1;
if(messageHolder[checkerPosition]!= startByte1) return; //start byte1
checkerPosition = (checkerPosition == messageLength - 1) ? 0 : checkerPosition+1;
if(messageHolder[checkerPosition]!= startByte2) return; // start byte 2
checkerPosition++;
readCount = 0;
sum = 0;
while (readCount < messageLength-4)
{
if(checkerPosition == messageLength) checkerPosition = 0;
message[readCount] = messageHolder[checkerPosition];
sum += messageHolder[checkerPosition];
readCount++;
checkerPosition++;
}
if(sum == messageHolder[messagePosition]) messageRead(message);
}

void messageRead(byte _message[]){
i = 0;
intensity = _message[i++];
for(int u = 1; u <= NumberUnits; u++)
{
unit = _message[i++];
if(false)
{
for(int x = 0;x<16;x++){
TM1640segments[x] = _message[i++];
}
updateDisplay(unit,word(0,0),TM1640segments,intensity);
}
else
{
greenLeds = _message[i++];
redLeds = _message[i++];
for(int x = 0;x<8;x++){
segments[x] = _message[i++];
}
updateDisplay(unit,word(greenLeds,redLeds),segments,intensity);
}
}
}

void buttonsCheck(){
if ((millis() - lastCheck)<debounceDelay) return;
lastCheck = millis();
buttons[0] = module1.getButtons();
sendButtons = false;
for(int u = 0; u < NumberTM1638Units; u++)
{
if (buttons[u] != lastButtonSend[u] && buttons[u] != oldbuttons[u]){
sendButtons = true;
}
oldbuttons[u] = buttons[u];
}
if(sendButtons){
Serial.write(startByte1);
for(int u = 0; u < NumberTM1638Units; u++)
{
lastButtonSend[u] = buttons[u];
Serial.write(lastButtonSend[u]);
}
}
}

void updateDisplay(byte unit, word _leds, byte _segments[], byte _intensity){
switch(unit){
case 1:
module1.setupDisplay(true,_intensity);
module1.setLEDs(_leds);
module1.setDisplay(_segments);
break;
}
}

El segundo codigo casi engloba al perimero que no tiene mucho sentido.
El primer código solo espera que digites algo por el puerto serie y prende un led?
Para que quieres agregar eso al segundo código?

A ver que me explique mejor. Uso este código para jugar a videojuegos, es decir, tengo un display TM1638, que simula el cuadro de instrumentos de un coche, los leds se encienden cuando sube de revoluciones y pone la velocidad, entre otras cosas. Quiero juntar ese código, por que con un motor de vibración puedo hacer que el motor vibre cuando voy a bloquear ruedas, anticipándome asi y consiguiendo un mayor realismo. Y los quiero unir, por que quiero tener el display y el motor de vibracion funcionando a la vez en la misma placa, lo que no se si sera posible.

iRacing DX SLI Manager - Test Arduino - YouTube aquí te dejo un vídeo en el que se ve como uso el display.

DIY - Logitech G27 brake vibration - YouTube y aquí de como funciona el motor

Un Saludo

Esa URL de Youtube está mal posteada, no se puede ingresar a ella con un simple click.
Por favor, lee las Normas del Foro en Español para saber como se hace y re-edita tu mensaje.
Saludos!

Me parece que falta mucha información aún!!

El motor de vibración donde lo conectas.. no leo nada que diga en el pin tal conecto el motor de vibración?
Supongo que será el pin 3.

Tu códgio 1, dice

const int outpin = 3;
 
void setup() {
  Serial.begin(9600);
  pinMode(outpin, OUTPUT);
}
 
void loop() {
  if (Serial.available()) {
    int inByte = Serial.read();
    digitalWrite(outpin, inByte);
  }
}

Que pretendes hacer con esta instrucción

int inByte = Serial.read();
digitalWrite(outpin, inByte);

el dato que reciba por serial. enviárselo al vibrador?
Pon entones un comentario que diga pin 3 // motor del vibrador
Pero puesto asi, lo hará todo el tiempo!!! y no creo que eso se corresponda con el video.

Bueno he anailizado el 2do código. Y veo que hay una análisis de bytes de modo que no se puede poner asi como asi.
Algun comando debe indicar el uso del freno. Asi que hasta que indiques que comando es, agregar esa instrucción tal vez no tenga el efecto que buscas.

Nota: usa tags para enlaces.
Es el eslabón. Acabas de poner dos enlaces de youtube sin el tag correspondiente.
Si no sabes, lee las normas del foro.
Asi debe verse el primero
Enlace Youtube

AHi te respondí antes de leer esto asi que no me hagas caso.
Si presta atención a como poner enlaces.
Me parece que debe haber una forma de relacionar el freno con lo que quieres hacer.
Mira la rutina que dice menssage_chequer
El valor que controla el freno será intensity?