Error De Compilación

Estoy elaborando un proyecto escolar (robot sumo). Los componentes son:"2 motores,1 L298N,1 CNY70, 1 HC-SR04, y un arduino uno, pero al momento de subir la programación sucede un error (paso la programacion), soy nuevo en esto (llevo poco menos de 3 semanas programando)

#include <L298N.h>//Puente H
#include <HCSR04.h>// Sensor Ultrasonico
int in3 = 3;
int in4 = 4;
int in5 = 5;
int in6 = 6;
int in7 = 7;
int in8 = 8;
int in9 = 9;
int in10 = 10;
int in11 = 11;
int in12 = 12;
int in13 = 13;
 long distancia;
 long tiempo;
  unsigned int referenciaBlanco = 100;
  unsigned int referenciaSinSuperficie = 20;
  unsigned int lecturaCNY70 = 0;
//funcion setup
void setup(){
 Serial.begin(9600);
  pinMode(in3, OUTPUT);//MOTOR D
  pinMode(in4, OUTPUT);//MOTOR D
  pinMode(in5, OUTPUT);//A
  pinMode(in6, OUTPUT);//MOTOR I
  pinMode(in7, OUTPUT);//MOTOR I
  pinMode(in8, INPUT);//SENSOR ENTRADA
  pinMode(in9, OUTPUT);//SENSOR SALIDA
  pinMode(in10, OUTPUT);//B
  pinMode(in11, OUTPUT);//ALIMENTACION ARDUINO
  pinMode(in12, INPUT);//SENSOR QTR ENTRADA
  pinMode(in13, OUTPUT);//SENSOR QTR SALIDA
 }
//funcion loop
void loop(long distancia, long tiempo, unsigned int referenciaBlanco, unsigned int referenciaSinSuperficie, unsigned int lecturaCNY70){
   delay(5000);
    void CNY70();
     void SENSORULTRA();
if(distancia>=30){
     void BUSQUEDA();
  }
if(distancia<=29){
    void ADELANTE();
  }
if(distancia=0){
    void ADELANTE();
  }
if(lecturaCNY70=referenciaBlanco){
    void REVERSA();
  }
}
// Sensor ultrasonico
void SENSORULTRA(long tiempo, long distancia){
  digitalWrite(9,LOW);
  delayMicroseconds(5);
  digitalWrite(9, HIGH);
  delayMicroseconds(10);
  tiempo=pulseIn(8, HIGH);
  distancia=int(0.017*tiempo);
  Serial.println("Distancia ");
  Serial.println(distancia);
  Serial.println(" cm");
  delay(1000);
}
//Sensor de seguimiento de linea
void CNY70(unsigned int referenciaBlanco = 100, unsigned int referenciaSinSuperficie = 20, unsigned int lecturaCNY70 = 0){
    lecturaCNY70= analogRead(A0);

    if((lecturaCNY70 >= 0) && (lecturaCNY70 <= referenciaSinSuperficie)){
     Serial.println("Sin Superficie"); 
   }
    else if((lecturaCNY70 > referenciaSinSuperficie) && (lecturaCNY70 < referenciaBlanco)){
     Serial.println("Linea Negra");
   }
    else if(lecturaCNY70 >= referenciaBlanco){
     Serial.println("Superficie Blanca");
   }
     delay(1000);
}
//Movimientos Generales
void ADELANTE(){
  void MOTORDERECHA();
  void MOTORIZQUIERDA();
}
void BUSQUEDA(){
  void MOTORDERECHA();
}
void REVERSA(){
  void MIND();
  void MINI();
}
//Funtamento de los movimientos
void MOTORDERECHA(){
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  delay(2000);
}
void MOTORIZQUIERDA(){
  digitalWrite(in7, HIGH);
  digitalWrite(in8, LOW);
  delay(2000);
}
void MINI(){ //Motor INverso Izquierda
  digitalWrite(in7, LOW);
  digitalWrite(in8, HIGH);
  delay(2000);
}
void MIND(){//Motor INverso Derecha
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  delay(2000);
}

el mensaje de error es:

"Arduino:1.8.6 (Windows 10), Tarjeta:"Arduino/Genuino Uno"

C:\Users\cssan\AppData\Local\Temp\ccfhgRzQ.ltrans0.ltrans.o: In function `main':

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:46: undefined reference to `loop'

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compilando para la tarjeta Arduino/Genuino Uno.

No se de donde lo sacaste pero esto

void loop(long distancia, long tiempo, unsigned int referenciaBlanco, unsigned int referenciaSinSuperficie, unsigned int lecturaCNY70){

no esta permitido. Debe ser solo

void loop()

otros erroes son estos

void CNY70();

solo pon

CNY70();

Pero el peor error de todos mas alla que no compila y cuando lo resuelvas este delay(5000) al comienzo del loop, eso hara que tu robot SUMO sea vulnerable 5 seg en cada ciclo, una barbaridad!!!

Bueno chicos, llamen a quien les enseño a programar y le dicen de mi parte que revise la forma de hacerlo porque no es posible que cada movimiento del robot tenga un delay(2000), otra LOCURA en un robot, con razón luego veo cosas en los videos que te llaman la atención.
Digo como noseda cuenta ese robot de la presencia del enemigo y como lo va a hacer si esta parado en esos delay().

Deben quitarlos de modo inteligente no porque si.
Asi que veremos el modo de hacerlo porque si supongo tienen la competencia en pocos dias tienen que trabajar mucho.

Otro detalle, llaman a dos librerías que no usan
Jamás invocan a nada de L298.h ni HCSR04.h porque al momento de medir distancia con el HCSR04 usan na rutina como SENSORULTRA

Ok, muchas gracias, por marcarme los errores, he eliminado los delays, y he re-posicionado los 5 seg (estos son de carácter obligatorio), por fuera del setup. Ya compila normal, y ahora me dedicare a pulir la programación, Aplicar mejor las librerias,etc. Muchas gracias

En serio.. y como dice la regla de esos 5 segundos puedes transcribirla? Me parece HORRIBLE

Como vas a tener un PARO de un robot en cada ciclo.. es simplemente una locura. Pensaba participar el año que viene pero deberé leer las normas porque con algo asi ni me preocupo.

Bueno mas allá de eso.. dinos como podemos seguir ayudándote.

Que no cunda el pánico, la norma de los 5 segundos es obligatoria en toda competición de sumo solo en el momento de la puesta en marcha solamente, para que de tiempo a ambos constructores a alejarse de la zona de lucha.

Por lo que comenta ya la ha movido al setup