I am making a flappy bird game and I am trying to change the speed of the bird at an exact interval, but it seems my function won't get called and I don't understand why, cause I used the same syntax that I used on other functions. The speedChange function is the one that doesn't work, and the updateDx moves the pipes faster based on which level I choose. Thank you very much in advance.

```js
   const canvas=document.getElementById("bird");
const ctx=canvas.getContext("2d");

let frames=0;
const DEGREE=Math.PI/180;//transforms radians in degrees

const sprite=new Image();
sprite.src="img/sprite.png";

//sounds
const SCORE_S=new Audio();
SCORE_S.src="audio/sfx_point.wav";
const FLAP=new Audio();
FLAP.src="audio/sfx_flap.wav";
const HIT=new Audio();
HIT.src="audio/sfx_hit.wav";
const SWOOSH=new Audio();
SWOOSH.src="audio/sfx_swooshing.wav";
const DIE=new Audio();
DIE.src="audio/sfx_die.wav";

//game state
const state=
{
 current:0,
 getReady:0,
 game:1,
 over:2
}

//start button
const start=
{
 x:120,
 y:263,
 w:83,
 h:29
}

canvas.addEventListener("click", function(evt)
{
 switch (state.current) {
  case state.getReady:
   state.current=state.game;
   SWOOSH.play();
   break;
  case state.game:
    bird.flap();
   FLAP.play();
    break;
  case state.over:
   let rect=canvas.getBoundingClientRect();
   let clickX=evt.clientX-rect.left;
   let clickY=evt.clientY-rect.top;

   //check if we click on the start button
   if(clickX>=start.x&&clickX<=start.x+start.w&&
    clickY>=start.y&&clickY<=start.y+start.h)
    {
     pipes.reset();
     bird.speedReset();
     score.reset();
     state.current=state.getReady;
    }
   break;
  }
});

const city=
{
 sX:0,
 sY:0,
 w:275,
 h:226,
 x:0,
 y:canvas.height-226,
 draw:function()
 {
  ctx.drawImage(sprite,this.sX,this.sY,this.w,this.h,this.x,this.y,this.w,this.h)
  ctx.drawImage(sprite,this.sX,this.sY,this.w,this.h,this.x+this.w,this.y,this.w,this.h)

 }
}
const foreground=
{
 sX:276,
 sY:0,
 w:224,
 h:112,
 x:0,
 y:canvas.height-112,
 dx:2,
 draw:function()
 {
  ctx.drawImage(sprite,this.sX,this.sY,this.w,this.h,this.x,this.y,this.w,this.h)
  ctx.drawImage(sprite,this.sX,this.sY,this.w,this.h,this.x+this.w,this.y,this.w,this.h)
 },
 update:function()
 {
  if(state.current==state.game)
  {
   this.x=(this.x-this.dx)%(this.w/2);//sensation that the bird is moving forward
  }
 }
}

const bird=
{
 animation:[
  {sX:276, sY:112},
  {sX:276, sY:139},
  {sX:276, sY:164},
  {sX:276, sY:139}
 ],
 x:50,
 y:150,
 w:34,
 h:26,
 radius:12,
 frame:0,
 gravity:0.1,
 jump:3,
 speed:0,
  rotation:0,
 draw:function()
 {
  let bird=this.animation[this.frame];
  ctx.save();
  ctx.translate(this.x,this.y);
  ctx.rotate(this.rotation);
  ctx.drawImage(sprite,bird.sX,bird.sY,this.w,this.h, -this.w/2, -this.h/2,this.w, this.h);
  ctx.restore();
 },

 flap:function()
 {
  this.speed=-this.jump;
 },
 update:function()
 {
  //if the game is in the get ready state the bird must flap slowly
  this.period=state.current==state.getReady ? 10:5;
  //we increase the frame by 1 each period
  this.frame+=frames%this.period==0?1:0;
  //frame goes from 0 to 4 then again to 0
  this.frame=this.frame%this.animation.length;

  if(state.current==state.getReady)
  {
   this.y=150; //reset the pos of the bird after game over
   this.rotation=0*DEGREE;
  }
  else {
   this.speed+=this.gravity;
   this.y+=this.speed;

   if(this.y+this.h/2>=canvas.height-foreground.h)
   {
    this.y=canvas.height-foreground.h-this.h/2;
    if(state.current==state.game)
    {
     state.current=state.over;
     DIE.play();
    }
   }
   //if the speed is greater than the jump, it means the bird is falling
    if(this.speed>=this.jump)
    {
     this.rotation=90*DEGREE;
     this.frame=1;//if the bird fell, it must stop flapping
    }
    else {
     this.rotation=-25*DEGREE;
    }
  }
 },
 speedReset:function()
{
 this.speed=0;
}

}

const getReady=
{
 sX:0,
 sY:228,
 w:173,
 h:152,
 x:canvas.width/2-173/2,
 y:80,

 draw:function()
 {
  if(state.current==state.getReady)
  {
  ctx.drawImage(sprite,this.sX,this.sY,this.w,this.h,this.x,this.y,this.w,this.h)
  }
 }
}

const gameOver=
{
 sX:175,
 sY:228,
 w:225,
 h:202,
 x:canvas.width/2-225/2,
 y:90,

 draw:function()
 {
  if(state.current==state.over)
  {
  ctx.drawImage(sprite,this.sX,this.sY,this.w,this.h,this.x,this.y,this.w,this.h)
   }
 }
}

const pipes=
{
 position:[],
 top:
 {
  sX:553,
  sY:0
 },
 bottom:
 {
  sX:502,
  sY:0
 },
 w:53,
 h:400,
 gap:90,
 maxYPos:-180,
 dx:2,
 updateDx : function updateDx(value)
 {
  console.log(this);
  this.dx=value;
 },
 speedChange : function speedChange(vall){
  //console.log("Am intrat");
  setInterval(
   function ()
   {this.dx+=vall;},3000);
 },
 draw:function()
 {
  for(let i=0;i<this.position.length;i++)
  {
   let p=this.position[i];

   let topYPos=p.y;
   let bottomYPos=p.y+this.h+this.gap;

   //top pipe
   ctx.drawImage(sprite,this.top.sX,this.top.sY,this.w,this.h,p.x,topYPos,this.w,this.h)
   //bottom pipe
   ctx.drawImage(sprite,this.bottom.sX,this.bottom.sY,this.w,this.h,p.x,bottomYPos,this.w,this.h)
  }
 },
 update:function()
 {

  if(state.current!==state.game) return;
  if(frames%100==0)
   {
    this.position.push({
     x:canvas.width,
     y:this.maxYPos*(Math.random()+1)
    });
   }
   for(let i=0;i<this.position.length;i++)
   {
    let p=this.position[i];

    let bottomPipeYPos=p.y+this.h+this.gap;

    //collision top
    if(bird.x+bird.radius>p.x&&bird.x-bird.radius<p.x+this.w&&
     bird.y+bird.radius>p.y&&bird.y-bird.radius<p.y+this.h)
    {
     state.current=state.over;
     HIT.play();
    }
    //collision bottom
    if(bird.x+bird.radius>p.x&&bird.x-bird.radius<p.x+this.w&&
     bird.y+bird.radius>bottomPipeYPos&&
     bird.y-bird.radius<bottomPipeYPos+this.h)
    {
     state.current=state.over;
     HIT.play();
    }
    //move pipes to the left
        p.x -=this.dx;
    //if the pipes go beyond canvas, we delete them from the array
    if(p.x+this.w<=0)
    {
     this.position.shift();
     score.value+=1;
     SCORE_S.play();
     score.best=Math.max(score.value, score.best);
     localStorage.setItem("best", score.best);
    }
   }
 },
 reset:function()
 {
 this.position=[];
}
}

//score
const score=
{
 best:parseInt(localStorage.getItem("best")) || 0,
 value:0,

 draw:function()
 {
  ctx.fillStyle="#FFF";
  ctx.strokeStyle="#000";
  if(state.current==state.game)
  {
   ctx.lineWidth=2;
   ctx.font="35px Teko";
   ctx.fillText(this.value, canvas.width/2, 50);
   ctx.strokeText(this.value, canvas.width/2, 50);
  }
  else if(state.current==state.over){
   //score value
   ctx.font="25px Teko";
   ctx.fillText(this.value, 225, 186);
   ctx.strokeText(this.value, 225, 186);

   //best score
   ctx.fillText(this.best, 225, 228);
   ctx.strokeText(this.best, 225, 228);
  }
 },
 reset:function()
 {
  this.value=0;
 }
}

function draw()
{
  ctx.fillStyle="#70c5ce"; //culoare fundal
  ctx.fillRect(0,0,canvas.width,canvas.height); //x=0, y=0
  city.draw();
  pipes.draw();
  foreground.draw();
  bird.draw();
  getReady.draw();
 gameOver.draw();
 score.draw();
}

function update()
{
 bird.update();
 foreground.update();
 pipes.update();
}

function loop()
{
 update();
 draw();
 frames++;
 requestAnimationFrame(loop);
}
 loop();

var button=document.createElement("button");
var button2=document.createElement("button")
var button3=document.createElement("button")

button.innerHTML="Easy"
button.type=button;
document.body.appendChild(button);

button2.innerHTML="Medium"
button.type=button;
document.body.appendChild(button2);

button3.innerHTML="Hard"
button.type=button;
document.body.appendChild(button3);

button.onclick=function(){level("first-button");}
button2.onclick=function(){level("second-button");}
button3.onclick=function(){level("third-button");}

function level(buttonTitle)
{
 if(buttonTitle=="first-button")
 {
  pipes.updateDx(2);
  this.state=state.game;
 }
 else if(buttonTitle=="second-button")
  {
  pipes.updateDx(3);
  }
 else {
  {
pipes.updateDx(20);
  }
 }
}

function Chspeed(buttonTitle){
 if(buttonTitle=="first-button")
 {
  pipes.speedChange(3);
  this.state=state.game;
 }
 else if(buttonTitle=="second-button")
  {
  pipes.speedChange(1);
  }
 else {
  {
    pipes.speedChange(3);
  }
 }
}
```