塞巴斯蒂安 发表于 2021-12-15 15:42:52

使用Arduino IDE开发环境编写的Hifive1开发板演示程序(Demo)

本帖最后由 塞巴斯蒂安 于 2021-12-15 15:42 编辑


RISC-V指令架构现在非常热,大有未来全球标准指令集之势。Hifive1是Sifive公司推出第一个商用RISC-V开发板,里面预装了一个三色发光二极管的颜色渐变的演示程序,但没有提供源代码,所以本人就仿照Hifive1开发板的演示效果,使用Arduino IDE写了这样一个模仿原效果的演示程序,如下供参考:
const int Interval = 50; //ms {1+}
const int MaxColorValue = 80; //{1..255}

const int PinCount = 3;
const int PinGreen = 3, PinBlue = 5, PinRed = 6;
const int ColorPin = {PinRed, PinGreen, PinBlue};

int CurPinNo = 0; //{0..2};
int ColorValue = {0, 0, 0};

int LastPinNo;
boolean Checked = false;

void setup() {
for (int i=0; i<PinCount; i++) {pinMode(ColorPin, OUTPUT);}

ColorValue = MaxColorValue;
LastPinNo = CurPinNo - 1;
if (LastPinNo < 0) {LastPinNo += PinCount;}

Serial.begin(115200);
for (int i=1; i<=4; i++) {
    if (Serial) {break;}
    delay(5);
}
   
Serial.println("");
Serial.println("                SIFIVE, INC.");
Serial.println("");
Serial.println("         5555555555555555555555555");
Serial.println("      5555                   5555");
Serial.println("       5555                     5555");
Serial.println("      5555                     5555");
Serial.println("   5555       5555555555555555555555");
Serial.println("    5555       555555555555555555555555");
Serial.println("   5555                           5555");
Serial.println("5555                               5555");
Serial.println(" 5555                                 5555");
Serial.println("5555555555555555555555555555          55555");
Serial.println("55555          555555555         55555");
Serial.println("    55555          55555         55555");
Serial.println("      55555          5         55555");
Serial.println("      55555                  55555");
Serial.println("          55555            55555");
Serial.println("            55555          55555");
Serial.println("             55555       55555");
Serial.println("               55555   55555");
Serial.println("               555555555");
Serial.println("                   55555");
Serial.println("                     5");
Serial.println("");
Serial.println("            'led_fade' Demo");
Serial.println("");
Serial.println("55555555555555555555555555555555555555555555555");
Serial.println("5555555 Are the LEDs Changing? 555555555");
Serial.println("55555555555555555555555555555555555555555555555");
}


void loop() {
for (int i=0; i<PinCount; i++) {
    analogWrite(ColorPin, 255 - ColorValue);
}                     //0=Brightest, 255=Darkest;

if (ColorValue== MaxColorValue) {
    if (++CurPinNo>= PinCount) {CurPinNo= 0;}
    if (++LastPinNo >= PinCount) {LastPinNo = 0;}
}

--ColorValue;
++ColorValue;

String Input = "";
while (Serial.available() > 0){
    Input += (char) Serial.read();
    delay(5);
}
if (!Checked) {
    Input.toLowerCase();
    if (Input == "y") {
      Serial.println(Input);
      Serial.println("PASS");
      Checked = true;
    }
    if (Input == "n") {
      Serial.println(Input);
      Serial.println("FAIL");
      Checked = true;
    }
}

delay(Interval);
}完
页: [1]
查看完整版本: 使用Arduino IDE开发环境编写的Hifive1开发板演示程序(Demo)