22 Online
2 Member And 20 Guest
Members present at the site
Today Visits : 4575
Yesterday Visits : 8142
All Visits : 925827

Welcome to Electronoobs Q&A, where you can ask questions and receive answers from other members of the community.


1 like 0 dislike

Hello sir, I am trying to build this project.When I try to compile this code it returns the error below.Both code of this project generating same error.Please help.

Here is the code

/*TRIAC control with Bluetooth; author: ELECTRONOOBS 

 * Subscribe: http://www.youtube.com/c/ELECTRONOOBS

 * Tutorial: http://www.ELECTRONOOBS.com/eng_circuitos_tut20.php

 * Thank you


int detectado = 0;

int valor=0;

int last_CH1_state = 0;

void setup() {


   * Port registers allow for lower-level and faster manipulation of the i/o pins of the microcontroller on an Arduino board. 

   * The chips used on the Arduino board (the ATmega8 and ATmega168) have three ports:

     -B (digital pin 8 to 13)

     -C (analog input pins)

     -D (digital pins 0 to 7)   

  //All Arduino (Atmega) digital pins are inputs when you begin...



  PCICR |= (1 << PCIE0);    //enable PCMSK0 scan                                                 

  PCMSK0 |= (1 << PCINT0);  //Set pin D8 trigger an interrupt on state change. Input from optocoupler

  pinMode(3,OUTPUT);        //Define D3 as output for the DIAC pulse

  Serial.begin(9600);       //Start serial com with the BT module (RX and TX pins)


void loop() {

   //Read the value of the pot and map it from 10 to 10.000 us. AC frequency is 50Hz, so period is 20ms. We want to control the power

   //of each half period, so the maximum is 10ms or 10.000us. In my case I've maped it up to 7.200us since 10.000 was too much



      valor = map(Serial.read(),0,255,10000,10);

      //In my case I've used valor = map(Serial.read(),0,255,7000,10); for better results


    if (detectado)


      delayMicroseconds(valor); //This delay controls the power







//This is the interruption routine



  /////////////////////////////////////               //Input from optocoupler

  if(PINB & B00000001){                               //We make an AND with the pin state register, We verify if pin 8 is HIGH???

    if(last_CH1_state == 0){                          //If the last state was 0, then we have a state change...

      detectado=1;                                    //We haev detected a state change!



  else if(last_CH1_state == 1){                       //If pin 8 is LOW and the last state was HIGH then we have a state change      

    detectado=1;                                      //We haev detected a state change!

    last_CH1_state = 0;                               //Store the current state into the last state for the next loop



in Arduino by (140 points)

1 Answer

0 like 0 dislike
I've compiled the same code and haev no error. What is the error taht youn get? Is about the ISR vector? What ARduino board are you using?
by (34.8k points)
Thank you for your response. Sir, I just noticed that, node mcu esp8266 board was selected in arduino IDE.So I was getting the error. Now it compiled successfully.Thank you again for your valuable time & one request, Can you please a make tutorial on how we can use this code for nodemcu esp8266.It will be helpful for us.