【arduino】随着音乐舞动的迪斯科螃蟹,音乐点阵双线程。
arduino吧
全部回复
仅看楼主
level 7


2017年06月06日 08点06分 1
level 5
有没有代码
2017年06月06日 09点06分 3
有的~
2017年06月06日 12点06分
好,不过最近有点忙,一直在单位加班,等我回家了发给你
2017年06月07日 01点06分
回复 反美游击队 :谢谢[太开心][太开心][太开心][太开心]
2017年06月07日 02点06分
楼主求代码,私聊好吗
2017年06月07日 08点06分
level 7
如果不用双线程,程序逐条扫描,无法做到音乐,点阵和led同时运行
2017年06月06日 09点06分 4
level 10
666,啥时候做滚动字幕,我想学习[委屈]
2017年06月06日 09点06分 5
滚动显示也做过的
2017年06月06日 12点06分
回复
反美游击队
:我的是8x8,能滚动,但每个字都是隔一个屏的距离,想连续输出,还没找到办法[乖]
2017年06月06日 12点06分
@辣么di简单 移位移对了嘛?
2017年06月06日 12点06分
回复
反美游击队
:放了几天全忘了,再研究研究[委屈]
2017年06月06日 13点06分
level 13
代码和线路图可以发下看看不
2017年06月06日 14点06分 6
贴在11楼
2017年06月07日 14点06分
程序居然被度娘删了,说我有违规信息,什么鬼?
2017年06月07日 14点06分
level 13
应该是双线程吧?
2017年06月06日 14点06分 7
双线程的,不然音乐和点阵不能一起来
2017年06月07日 00点06分
level 13
[笑眼]有点意思
2017年06月07日 06点06分 9
level 14
[小乖]萌新求个程序
2017年06月07日 12点06分 10
贴在11楼
2017年06月07日 14点06分
程序居然被度娘删了,说我有违规信息,什么鬼?
2017年06月07日 14点06分
回复
反美游击队
:太遗憾了
2017年06月08日 01点06分
@有人叫这名吗啊 11楼有了,我申请恢复了
2017年06月08日 06点06分
level 7
#include "LedControl.h"//点阵显示库
#include "pitches.h"//音符库
#include "SCoop.h"//双线程库
int DIN = 12;
int CS = 11;
int CLK = 10;
int i;
int j;
int a;
int noteDuration;
int melody[] = {
NOTE_G4,//5
NOTE_G4,//5
NOTE_A4,//6
NOTE_G4,//5
NOTE_C5,//1.
NOTE_B4,//7
NOTE_G4,//5
NOTE_G4,//5
NOTE_A4,//6
NOTE_G4,//5
NOTE_D5,//2.
NOTE_C5,//1.
NOTE_G4,//5
NOTE_G4,//5
NOTE_G5,//5.
NOTE_E5,//3.
NOTE_C5,//1.
NOTE_B4,//7
NOTE_A4,//6
NOTE_F5,//4.
NOTE_F5,//4.
NOTE_E5,//3.
NOTE_C5,//1.
NOTE_D5,//2.
NOTE_C5,//1.
};
//祝你生日快乐的简谱
int noteDurations[] = {
8,8,4,4,4,2,
8,8,4,4,4,2,
8,8,4,4,4,4,2,
8,8,4,4,4,1,
};
//音符时值 8为八分音符 4为四分音符
LedControl lc=LedControl(DIN,CLK,CS,4); //点阵管脚定义
byte s[32]={0x49,0xE4,0x22,0x19,0x25,0xE2,0x4A,0x02,0x02,0x4A,0xE2,0x25,0x19,0x22,0xE4,0x49,
0x20,0x90,0x48,0x28,0xF0,0x08,0x08,0x08,0x08,0x08,0x08,0xF0,0x28,0x48,0x90,0x20,
};//螃蟹图案
byte r[32]={0x00,0x41,0xE2,0x19,0xE5,0x42,0x0A,0x02,0x02,0x0A,0x42,0xE5,0x19,0xE2,0x41,0x00,
0x92,0x24,0x48,0x28,0xF0,0x08,0x08,0x08,0x08,0x08,0x08,0xF0,0x28,0x48,0x24,0x92,
}; //螃蟹图案
defineTask(Task1);//设置线程1
void Task1::setup()
{
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(8,OUTPUT);
}
//线程1初始
void Task1::loop()
{
for (int thisNote = 0; thisNote < (sizeof(melody)/sizeof(melody[0])); thisNote++) //循环一首歌的音符
{
a++;
if(a>6){a=0;}
int noteDuration = 1000/noteDurations[thisNote];//每个音符对应的时值
tone(8, melody[thisNote],noteDuration);
switch (a)
{
case 0:
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
break;
case 1:
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
break;
case 2:
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
break;
case 3:
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
break;
case 4:
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
break;
case 5:
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
break;
case 6:
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
break;
}// GRB 彩灯 每个音符变一次颜色
int pauseBetweenNotes = noteDuration * 1.30; //时值的实际时间长度
sleep(pauseBetweenNotes);//延时实际长度
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
noTone(8);
}
sleep(1000);
}
//线程1loop
defineTask(Task2);
void Task2::setup()
{
for(j=0;j<4;j++)
{
lc.shutdown(j,false); //启动时,MAX72XX处于省电模式
lc.setIntensity(j,8); //将亮度设置为最大值
lc.clearDisplay(j); //清除显示
}
}
void Task2::loop()
{
for(i=0;i<8;i++)
{
lc.setRow(0,i,s[i+24]); //四个点阵显示图案
lc.setRow(1,i,s[i+8]);
lc.setRow(2,i,s[i+16]);
lc.setRow(3,i,s[i]);
}
sleep(300);
for(i=0;i<8;i++)
{
lc.setRow(0,i,r[i+24]);
lc.setRow(1,i,r[i+8]);
lc.setRow(2,i,r[i+16]);
lc.setRow(3,i,r[i]);
}
sleep(300);
}
void setup ()
{
mySCoop.start();
}
void loop()
{
yield();
}
双线程SCOOP要使用Sleep()延时,硬件为四块MAX7219点阵模块联机。
2017年06月07日 14点06分 11
level 13
私发一下试试
2017年06月08日 04点06分 12
11楼有了,我申请恢复了
2017年06月08日 06点06分
level 5
楼主,你的点阵显示库和双线程库是在哪个示例中找的,还是说不用另外调用
2017年06月11日 01点06分 13
直接网上下载,自带不一定有。按照库名网上搜一下,有的。
2017年06月11日 02点06分
回复
反美游击队
:百度不到[泪]
2017年06月12日 09点06分
@璇品玉璞 邮箱,我发你
2017年06月13日 14点06分
回复 反美游击队 :[email protected]
2017年06月16日 08点06分
level 1
楼主,请教一下怎么让单个点阵和音乐同时播放啊,对着代码改了好久,也没弄成功[惊哭]
2017年06月15日 06点06分 14
朋友我想问你一下arduino方面的东西!就是你
2017年06月15日 06点06分
回复 EroslonW :可以吗!
2017年06月15日 06点06分
回复 EroslonW :问我?
2017年06月15日 06点06分
回复 EroslonW :可以,只要我会[呵呵]
2017年06月15日 06点06分
level 5
嘿!楼主!
2017年06月18日 03点06分 15
level 5
楼主,用你的代码出现了如下错误:
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o: In function `loop':
C:\Users\DELL\Documents\Arduino\crab/crab.ino:126: undefined reference to `SCoopTask::sleep(long)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:132: undefined reference to `SCoopTask::sleep(long)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:149: undefined reference to `LedControl::setRow(int, int, unsigned char)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:150: undefined reference to `LedControl::setRow(int, int, unsigned char)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:151: undefined reference to `LedControl::setRow(int, int, unsigned char)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:152: undefined reference to `LedControl::setRow(int, int, unsigned char)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:154: undefined reference to `SCoopTask::sleep(long)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:158: undefined reference to `LedControl::setRow(int, int, unsigned char)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:159: undefined reference to `LedControl::setRow(int, int, unsigned char)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:160: undefined reference to `LedControl::setRow(int, int, unsigned char)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:161: undefined reference to `LedControl::setRow(int, int, unsigned char)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:163: undefined reference to `SCoopTask::sleep(long)'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o: In function `setup':
C:\Users\DELL\Documents\Arduino\crab/crab.ino:140: undefined reference to `LedControl::shutdown(int, bool)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:141: undefined reference to `LedControl::setIntensity(int, int)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:142: undefined reference to `LedControl::clearDisplay(int)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:167: undefined reference to `mySCoop'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:167: undefined reference to `mySCoop'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:167: undefined reference to `SCoop::start()'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o: In function `__static_initialization_and_destruction_0':
C:\Users\DELL\Documents\Arduino\crab/crab.ino:56: undefined reference to `LedControl::LedControl(int, int, int, int)'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o: In function `__base_ctor ':
C:\Users\DELL\Documents\Arduino\crab/crab.ino:67: undefined reference to `SCoopTask::SCoopTask(unsigned char*, unsigned int)'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:135: undefined reference to `SCoopTask::SCoopTask(unsigned char*, unsigned int)'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o: In function `__base_dtor ':
C:\Users\DELL\Documents\Arduino\crab/crab.ino:135: undefined reference to `SCoopTask::~SCoopTask()'
C:\Users\DELL\Documents\Arduino\crab/crab.ino:67: undefined reference to `SCoopTask::~SCoopTask()'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o:(.rodata+0xac): undefined reference to `SCoopTask::start()'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o:(.rodata+0xae): undefined reference to `SCoopTask::launch()'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o:(.rodata+0xb0): undefined reference to `SCoopEvent::pause()'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o:(.rodata+0xb2): undefined reference to `SCoopEvent::paused()'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o:(.rodata+0xb4): undefined reference to `SCoopEvent::resume()'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o:(.rodata+0xc0): undefined reference to `SCoopTask::start()'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o:(.rodata+0xc2): undefined reference to `SCoopTask::launch()'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o:(.rodata+0xc4): undefined reference to `SCoopEvent::pause()'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o:(.rodata+0xc6): undefined reference to `SCoopEvent::paused()'
C:\Users\DELL\AppData\Local\Temp\ccMsonKW.ltrans0.ltrans.o:(.rodata+0xc8): undefined reference to `SCoopEvent::resume()'
collect2.exe: error: ld returned 1 exit status
exit status 1
为开发板 Arduino/Genuino Uno 编译时出错。
2017年06月20日 03点06分 16
那么多错误[what],不应该啊,我能编译的,我有空了再看看
2017年06月20日 10点06分
1