搬运了一个arduino代码,想学习一下,但有两句不懂,求解释

#include <Servo.h>
 
Servo Front; //实例化前舵机
Servo Back;  //实例化后舵机
 
int obstcleSensor = 2; //定义红外避障传感器数字口2
unsigned long previousMillis = 0;
int walkState = 1; //行走状态
 
void setup()
{
 
    pinMode(obstcleSensor, INPUT);
    Front.attach(3);
    Back.attach(4);
 
    //初始舵机转到90度,前后两对脚需要摆正
    Front.write(90); 
    Back.write(90);
 
    delay(3000);
    //Serial.begin(9600);
}
 
void loop()
{
 
    unsigned long currentMillis = millis();
    int obstcleState = digitalRead(obstcleSensor);
    //Serial.println(obstcleState);
    if (obstcleState == 0)
    {
        walkState = 0;
        previousMillis = currentMillis;
    }
    if (walkState == 1)
    {
        walkForward();
    }
 
    if (walkState == 0)
    {
        if (currentMillis - previousMillis <= 2000)//检测到障碍,后退2S
        {
            walkBackward();
        }
        if (currentMillis - previousMillis > 2000 && currentMillis - previousMillis <= 2900)
        {
            moveStraight();
        }
        if (currentMillis - previousMillis >= 3000)
        {
            turnRight();
        }
        if (currentMillis - previousMillis >= 6000)
        {
            walkState = 1;
        }
    }
}
 
//直行Forward方法,通过调节前后腿旋转角度和延迟时间调整机器人的步幅和速度
void walkForward()
{
    Front.write(140);
    delay(100);
    Back.write(70);
    delay(150);
 
    Front.write(70);
    delay(100);
    Back.write(140);
    delay(150);
}
 
//后退backward方法
void walkBackward()
{
    Back.write(140);
    delay(100);
    Front.write(70);
    delay(150);
 
    Back.write(70);
    delay(100);
    Front.write(140);
    delay(150);
}
 
//右转turn right方法
void turnRight()
{
 
    Front.write(150);
    delay(100);
    Back.write(70);
    delay(150);
 
    Front.write(80);
    delay(100);
    Back.write(140);
    delay(150);
}
 
//左转turn left
void turnLeft()
{
    Front.write(120);
    delay(200);
    Front.write(40);
    delay(200);
}
 
//摆正
void moveStraight()
{
    Front.write(90);
    Back.write(90);
    delay(200);
}

unsigned long previousMillis = 0;
unsigned long currentMillis = millis();
解释一下这两句代码的意思,麻烦一下,刚接触红外模块

声明无符号long类型的变量,c语法啊