För den kräsne musikkonnässören introduceras nu en revolution inom ljud- och musikutbudet: Fyran. Klicka dig fram genom handplockade smultron ur den svenska och europeiska musikskatten. Dröm dig tillbaka till barndomens somrar med ”Glassbilen”. Eller varför inte återuppleva det euforiska Ibiza-dansgolvet med den tidlösa ”Levels”. Allt kristallklart framställt genom en första klassens piezo-högtalare. Den avskalade designen ger ett rent intryck och gör Fyran mycket lätt att ta till sig och använda. En enkel knapptryckning är allt som krävs för att slå på Fyran, byta låt och stänga av Fyran. Välkommen till framtiden, välkommen hem.
Till produkten användes följande komponenter:
Den sammansatta produkten testades med hjälp av en J-TAG.
Nedan finner du länkar till de datablad som använts under projektet:
/*
* test.c
*
* Created: 2017-04-12 11:22:42
* Author : Cecilia Skoglund och Johan Hansson
*/
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
int main(void){
DDRD = 0b00110000;
PINA = 0x01;
DDRB = 0xFF;
int melodyCounter = 1;
int loopToneActive = 0;
void bOn(){
PORTD = 0b01010000;
PORTD = 0b01000000;
PORTB = 0b11111111;
PORTD = 0b01010000;
PORTD = 0b01110000;
}
void bOff(){
PORTD = 0b01010000;
PORTD = 0b01000000;
PORTB = 0b00000000;
PORTD = 0b01010000;
PORTD = 0b01110000;
}
void generateTone(double delay, int iteration){
if(loopToneActive==0){_delay_ms(200);}
for(int i = 0;i
bOn();
_delay_ms(delay);
bOff();
_delay_ms(delay);
}
PORTD = 0b00000000;
}
void loopTone(){
loopToneActive==1;
for(int i = 5;i<20;i++){
generateTone(i,15);
}
for(int i = 20;i>3;i--){
generateTone(i,15);
}
loopToneActive==0;
}
int checkButton(){
if(PIND & (1<
melodyCounter++;
loopTone();
_delay_ms(200);
return 1;
}
return 0;
}
void Feliz(){
while(1){
/* D */
generateTone(14,60);
if(checkButton()==1){
break;
}
/* D */
generateTone(14,60);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,120);
if(checkButton()==1){
break;
}
/* D */
generateTone(14,100);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,150);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.5,300);
if(checkButton()==1){
break;
}
/* D */
generateTone(14,60);
if(checkButton()==1){
break;
}
/* D */
generateTone(14,60);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,120);
if(checkButton()==1){
break;
}
/* D */
generateTone(14,100);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,130);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,300);
if(checkButton()==1){
break;
}
/* D */
generateTone(14,60);
if(checkButton()==1){
break;
}
/* D */
generateTone(14,60);
if(checkButton()==1){
break;
}
/* D */
generateTone(5.3,250);
if(checkButton()==1){
break;
}
/* B */
generateTone(8,200);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,200);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.7,200);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,150);
if(checkButton()==1){
break;
}
/* C */
generateTone(7.5,100);
if(checkButton()==1){
break;
}
/* C */
generateTone(7.5,100);
if(checkButton()==1){
break;
}
/* B */
generateTone(8,200);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,200);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,150);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,300);
if(checkButton()==1){
break;
}
_delay_ms(200);
}
}
void Twinkle(){
while(1){
/* D */
generateTone(13.8,150);
if(checkButton()==1){
break;
}
/* D */
generateTone(13.8,150);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,200);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,200);
if(checkButton()==1){
break;
}
/* B */
generateTone(8,200);
if(checkButton()==1){
break;
}
/* B */
generateTone(8,200);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,300);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,180);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,180);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.7,175);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.7,175);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,160);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,160);
if(checkButton()==1){
break;
}
/* D */
generateTone(13.8,150);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,200);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,200);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,180);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,180);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.7,175);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.7,175);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,160);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,200);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,200);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,180);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,180);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.7,175);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.7,175);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,160);
if(checkButton()==1){
break;
}
/* D */
generateTone(13.8,150);
if(checkButton()==1){
break;
}
/* D */
generateTone(13.8,150);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,200);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,200);
if(checkButton()==1){
break;
}
/* B */
generateTone(8,200);
if(checkButton()==1){
break;
}
/* B */
generateTone(8,200);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,300);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,180);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,180);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.7,175);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.7,175);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,160);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,160);
if(checkButton()==1){
break;
}
/* D */
generateTone(13.8,150);
if(checkButton()==1){
break;
}
_delay_ms(200);
}
}
void Glassbilen(){
while(1){
/* F */
generateTone(11.5,80);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,100);
if(checkButton()==1){
break;
}
/* C */
generateTone(7.5,100);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,100);
if(checkButton()==1){
break;
}
/* F */
generateTone(11.5,160);
if(checkButton()==1){
break;
}
/* F */
generateTone(11.5,80);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,100);
if(checkButton()==1){
break;
}
/* C */
generateTone(7.5,100);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,100);
if(checkButton()==1){
break;
}
/* F */
generateTone(11.5,160);
if(checkButton()==1){
break;
}
/* F */
generateTone(11.5,80);
if(checkButton()==1){
break;
}
/* Bb */
generateTone(8.5,200);
if(checkButton()==1){
break;
}
/* Bb */
generateTone(8.5,110);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,160);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,90);
if(checkButton()==1){
break;
}
/* F */
generateTone(11.5,160);
if(checkButton()==1){
break;
}
_delay_ms(500);
}
}
void Levels(){
while(1){
/* C# */
generateTone(7,100);
if(checkButton()==1){
break;
}
/* B */
generateTone(8,100);
if(checkButton()==1){
break;
}
/* G# */
generateTone(9.5,100);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.7,100);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
_delay_ms(1500);
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* D# */
generateTone(13,85);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
_delay_ms(2000);
/* C# */
generateTone(7,100);
if(checkButton()==1){
break;
}
/* B */
generateTone(8,100);
if(checkButton()==1){
break;
}
/* G# */
generateTone(9.5,100);
if(checkButton()==1){
break;
}
/* F# */
generateTone(10.7,100);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
_delay_ms(1500);
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,75);
if(checkButton()==1){
break;
}
/* C# */
generateTone(14.1,75);
if(checkButton()==1){
break;
}
/* C# */
generateTone(14.1,75);
if(checkButton()==1){
break;
}
/* B */
generateTone(16.4,60);
if(checkButton()==1){
break;
}
/* B */
generateTone(16.4,60);
if(checkButton()==1){
break;
}
_delay_ms(1500);
}
}
void OneIntro(){
int a = 1;
while(a == 1){
for(int i=0;i<4;i++){
generateTone(70,50);
if(checkButton()==1){
break;
}
}
for(int i=0;i<4;i++){
generateTone(70,25);
if(checkButton()==1){
break;
}
}
for(int i=0;i<8;i++){
generateTone(70,12.5);
if(checkButton()==1){
break;
}
}
for(int i=0;i<16;i++){
generateTone(70,5);
if(checkButton()==1){
break;
}
}
for(int i=0;i<32;i++){
generateTone(70,3);
if(checkButton()==1){
break;
}
}
for(int i=0;i<32;i++){
generateTone(70,2);
if(checkButton()==1){
break;
}
}
for(int i=0;i<64;i++){
generateTone(70,1);
if(checkButton()==1){
break;
}
}
for(int i=70;i>60;i--){
generateTone(i,1);
if(checkButton()==1){
break;
}
}
for(int i=60;i>50;i--){
generateTone(i,2);
if(checkButton()==1){
break;
}
}
for(int i=50;i>40;i--){
generateTone(i,3);
if(checkButton()==1){
break;
}
}
for(int i=40;i>30;i--){
generateTone(i,4);
if(checkButton()==1){
break;
}
}
for(int i=30;i>20;i--){
generateTone(i,5);
if(checkButton()==1){
break;
}
}
for(int i=20;i>4;i--){
generateTone(i,6);
if(checkButton()==1){
break;
}
}
generateTone(9,900);
if(checkButton()==1){
break;
}
_delay_ms(500);
a = 0;
}
}
void One(){
OneIntro();
while(1){
/* A */
generateTone(9,150);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,150);
if(checkButton()==1){
break;
}
/* F */
generateTone(11.5,150);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,130);
if(checkButton()==1){
break;
}
/* D */
generateTone(13.8,100);
if(checkButton()==1){
break;
}
/* D */
generateTone(13.8,90);
if(checkButton()==1){
break;
}
/* D */
generateTone(13.8,90);
if(checkButton()==1){
break;
}
/* D */
generateTone(13.8,90);
if(checkButton()==1){
break;
}
/* D */
generateTone(13.8,90);
if(checkButton()==1){
break;
}
_delay_ms(600);
/* D */
generateTone(13.8,70);
if(checkButton()==1){
break;
}
/* D */
generateTone(13.8,70);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,150);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,150);
if(checkButton()==1){
break;
}
/* F */
generateTone(11.5,150);
if(checkButton()==1){
break;
}
/* E */
generateTone(12,130);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,150);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,150);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,150);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,150);
if(checkButton()==1){
break;
}
/* G */
generateTone(10,150);
if(checkButton()==1){
break;
}
_delay_ms(600);
/* G */
generateTone(10,75);
if(checkButton()==1){
break;
}
/* A */
generateTone(9,75);
if(checkButton()==1){
break;
}
_delay_ms(500);
}
}
while(1){
DDRD = 0b01110100;
PORTD = 0x00;
switch(melodyCounter){
case 1 : while(checkButton()==0){}; break;
case 2 : Glassbilen();_delay_ms(400); break;
case 3 : Twinkle();_delay_ms(400); break;
case 4 : Levels(); _delay_ms(400); break; break;
case 5 : One();_delay_ms(400);melodyCounter=1;break;
}
}
}