error de compilación

Un cordial saludo comunidad de Arduino.

Hola, soy nuevo por aquí. estoy intentando realizar un proyecto para contolar la puerta de mi garaje.

el codigo es siguiente:

/*automatismo portal. controla un portal con llave que ordena PARAR,ABRIR, PARAR, CERRAR alternativamente.con funcionamiento por bluetooth y mando rf 315Mhz

*/
//constantes que no cambian
const int st1=8;          //rele 1 puerta
const int st2=9;          //rele 2 puerta
const int st3=10;         //rele 3 puerta
const int luz=11;         //luz garaje

const int llave=12;       //llave garaje
const int dol=7;          //limite puerta abierta
const int dcl=6;          //limite puerta cerrada

//constantes que varian

int estado=0;


#define D0 2        //asigna el pin 2 al pin D0 del receptor RF
#define D1 3        //asigna el pin 3 al pin D1 del receptor RF
#define VT 4        //asigna el pin 4 al pin D2 del receptor RF


void setup() {
 Serial.begin(9600);
 pinMode(st1,OUTPUT);
 pinMode(st2,OUTPUT);
 pinMode(st3,OUTPUT);
 pinMode(luz,OUTPUT); // luz de la puerta
 pinMode(llave,INPUT); //llave exterior
 pinMode(dol,INPUT); // limite de puertas abiertas
 pinMode(dcl,INPUT);  //limite de puertas cerradas
 pinMode(D0, INPUT);   //configura el pin D0 como entrada
 pinMode(D1, INPUT);   //configura el pin D1 como entrada
 pinMode(VT, INPUT);   //configura el pin VT como entrada

}
void D_O()
{
  digitalWrite(st1,HIGH);
 digitalWrite(st2,LOW);        //abre puerta
 digitalWrite(st3,HIGH);
 delay(100);
}
void D_C()
{

digitalWrite(st1,HIGH);
 digitalWrite(st2,HIGH);        //cierra puerta
 digitalWrite(st3,HIGH);
 delay(100);
}
void loop() {
puertabluetooth();
abre();
paradoAbriendo();
cierra();
paradoCerrando();

receptorRF();

}

void puertabluetooth()          //void bluetooth
{

 if(Serial.available()>0){
 estado = Serial.read();
}
if (estado =='1'){
 digitalWrite(st1,HIGH);
 digitalWrite(st2,LOW);        //abre puerta
 digitalWrite(st3,HIGH);
}

if (estado =='2'){
 digitalWrite(st1,LOW);
 digitalWrite(st2,LOW);         //stop
 digitalWrite(st3,LOW);
}
if (estado =='3'){
 digitalWrite(st1,HIGH);
 digitalWrite(st2,HIGH);        //cierra puerta
 digitalWrite(st3,HIGH);
}
if (estado =='4'){
 digitalWrite(st1,LOW);
 digitalWrite(st2,LOW);         //stop
 digitalWrite(st3,LOW);
}
if (estado =='5'){
 digitalWrite(luz,HIGH);        //enciende luz
 }
if (estado =='6'){
 digitalWrite(luz,LOW);         //apaga luz
 }
}

void abre()
{
digitalWrite(void D_O(),HIGH);
digitalWrite(void D_C(),LOW);
 delay(500);
 while(digitalRead(dol)==HIGH)
   {if(digitalRead(llave)==LOW}
   {digitalWrite(D_O(),HIGH}
   else
   return;
   
}

void paradoAbriendo()
{
 digitalWrite(void D_O(),LOW);
digitalWrite(void D_C(),LOW);
 delay(500);
 while(digitalRead(llave)==LOW)
 {digitalWrite(void D_O(),LOW)}
 return;
}

void cierra()
{
 digitalWrite(void D_C(),HIGH);
digitalWrite(void D_O(),LOW);
 delay(500);
 while(digitalRead(dcl)==HIGH)
 {
   if(digitalRead(llave)==LOW)
   {digitalWrite(void D_C(),HIGH);}
   else{return;}
 }
 return;
}

void paradoCerrando()

{
   digitalWrite(void D_O(),LOW);
digitalWrite(void D_C(),LOW);
 delay(500);
 while (digitalRead(llave)==LOW)
 {
   digitalWrite(void D_C(),LOW);
 }
 return;
}


void receptorRF()
{

//Si el pin VT (valid Transmission) es igual a HIGH quiere decir
//que hubo una comunicacion exitosa entre control y receptor
if(digitalRead(VT)){
 //si el pin D0 es igual a high, es porque se presiono el boton B en el control
 if(digitalRead(D0)){
   digitalWrite(void D_O(), !digitalRead(void D_O());  //alterna el estado de la salida
   delay(300);
 }
//si el pin D1 es igual a high, es porque se presiono el boton D en el control
if(digitalRead(D1)){
   digitalWrite(void D_C(), !digitalRead(void D_C());  //alterna el estado de la salida
   delay(300);
 }
//si el pin D1 es igual a high, es porque se presiono el boton D en el control  
}

y los errores estos:

Arduino:1.6.9 (Windows 7), Tarjeta:"Arduino Nano, ATmega328"

C:\Users\viliño\Documents\Arduino\puertagarage6\puertagarage6.ino: In function 'void abre()':

puertagarage6:101: error: expected primary-expression before 'void'

puertagarage6:102: error: expected primary-expression before 'void'

puertagarage6:105: error: expected ')' before '}' token

puertagarage6:105: error: expected primary-expression before '}' token

puertagarage6:105: error: expected ';' before '}' token

puertagarage6:106: error: expected ')' before '}' token

puertagarage6:106: error: expected ';' before '}' token

puertagarage6:107: error: 'else' without a previous 'if'

C:\Users\viliño\Documents\Arduino\puertagarage6\puertagarage6.ino: In function 'void paradoAbriendo()':

puertagarage6:114: error: expected primary-expression before 'void'

puertagarage6:115: error: expected primary-expression before 'void'

puertagarage6:118: error: expected primary-expression before 'void'

puertagarage6:118: error: expected ';' before '}' token

C:\Users\viliño\Documents\Arduino\puertagarage6\puertagarage6.ino: In function 'void cierra()':

puertagarage6:124: error: expected primary-expression before 'void'

puertagarage6:125: error: expected primary-expression before 'void'

puertagarage6:130: error: expected primary-expression before 'void'

C:\Users\viliño\Documents\Arduino\puertagarage6\puertagarage6.ino: In function 'void paradoCerrando()':

puertagarage6:139: error: expected primary-expression before 'void'

puertagarage6:140: error: expected primary-expression before 'void'

puertagarage6:144: error: expected primary-expression before 'void'

C:\Users\viliño\Documents\Arduino\puertagarage6\puertagarage6.ino: In function 'void receptorRF()':

puertagarage6:158: error: expected primary-expression before 'void'

puertagarage6:158: error: expected primary-expression before 'void'

puertagarage6:163: error: expected primary-expression before 'void'

puertagarage6:163: error: expected primary-expression before 'void'

puertagarage6:167: error: expected '}' at end of input

exit status 1
expected primary-expression before 'void'

Este reporte podría tener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.

muchisimas gracias de antemano.

Esto no se puede hacer

digitalWrite(void D_O(), !digitalRead(void D_O());

cuando declaras una funcion tenes que anteponer el tipo de variable que retorna la funcion, y si no retorna void

//cuando la declaras
void abre(){
   codigo
}

//cunado la invocas
abre()

en el caso que llames con varaiables los mismo, cunado la declaras tenes que indicar el tipo de variables pero cunado la llamas solo el nombre

Cuando posteas códigos debes usar etiquetas o sino leer las normas del foro para que no recibas un mensaje como este. Ahora hazlo gero12 porque veo que te gusta responder por no lo haces de acuerdo a las normas.