コード例 #1
0
ファイル: OLED.c プロジェクト: slizer6/Byggern
void oled_clear_screen(){
	int i, j;
	for(i = 0; i < 8; i++){
		oled_goto_line(i);
		for(j = 0; j < 256; j++){
			write_d(0b00000000);
		}
	}
	
	//Jump to first line
	oled_goto_line(0);
}
コード例 #2
0
ファイル: OLED.c プロジェクト: slizer6/Byggern
void oled_welcome(){
	oled_clear_screen();
	
	char message1[] = "VELKOMMEN!";
	char message2[] = "WELCOME!";
	char message3[] = "Willkommen!";
	char message4[] = "Bienvenue!";
	char message5[] = "Bon bini!";
	char message6[] = "Mauya!";
	char message7[] = "Welkam!";
	
	oled_goto_line(0);
	oled_print(message1);
	oled_goto_line(1);
	oled_print(message2);
	oled_goto_line(2);
	oled_print(message3);
	oled_goto_line(3);
	oled_print(message4);
	oled_goto_line(4);
	oled_print(message5);
	oled_goto_line(5);
	oled_print(message6);
	oled_goto_line(6);
	oled_print(message7);
	
	_delay_ms(1000);
}
コード例 #3
0
ファイル: highscore.c プロジェクト: jonarnp/byggern
void display_highscore_list(uint8_t offset)
{
	// Print text to OLED
	oled_clear();
	oled_goto_line(offset);
	oled_goto_column(0);
	oled_print_p(PSTR("Highscore list"));
	
	for(int i = 0; i < HIGHSCORE_LENGTH; i++)
	{
		oled_goto_line(2+offset+i);
		oled_goto_column(0);
		for (int j = 0; j < NAME_LENGTH; j++)
		{
			oled_putchar(highscore_list[i].name[j]);
		}
		oled_print(" ");
		oled_print(uint16_to_str(highscore_list[i].score));
	}
}
コード例 #4
0
ファイル: OLED.c プロジェクト: slizer6/Byggern
void oled_game_over(){
	oled_clear_screen();
	
	sound_play(GAMEOVER); //Play game over music
	
	char message1[] = "GAME OVER";
	//char message2[] = "YOU DIED";

	oled_goto_line(3);
	oled_changeColumn(2);
	oled_print(message1);
	
	_delay_ms(3000);
	sound_play(SILENCE); //prevent looping
	_delay_ms(1000);
}
コード例 #5
0
ファイル: highscore.c プロジェクト: jonarnp/byggern
highscore_element_t enter_initials(uint16_t score)
{
	highscore_element_t new_score;
	int8_t set_char = 0;
	uint8_t iter = 0;
	
	// Print text to OLED
	oled_clear();
	oled_goto_line(0);
	oled_goto_column(0);
	oled_print_p(PSTR("Your score "));
	oled_print(uint16_to_str(score));
	
	oled_goto_line(2);
	oled_goto_column(0);
	oled_print_p(PSTR("Enter you initials"));
	
	oled_goto_line(6);
	oled_goto_column(0);
	oled_print_p(PSTR("Press left button when finished"));
	
	//Recently obtained score
	new_score.score = score;
	
	//Initial initials
	new_score.name[0] = 'A';
	new_score.name[1] = 'A';
	new_score.name[2] = 'A';
	
	//Stay in the enter_initials menu until left slider button is pushed
	while (!SLIDER_left_button())
	{
		if (JOY_getDirection() == UP)
		{
			if (++iter > SET_NAME_DELAY)
			{
				iter = 0;
				
				//Increment selected initial
				if (set_char == 0)
				{
					new_score.name[0]--;
				}
				else if (set_char == 1)
				{
					new_score.name[1]--;
				}
				else
				{
					new_score.name[2]--;
				}
				
				//Check for under-roll
				if (new_score.name[set_char] < 'A') new_score.name[set_char] = 'Z';
			}
		}
		else if (JOY_getDirection() == DOWN)
		{
			if (++iter > SET_NAME_DELAY)
			{
				iter = 0;
				
				//Increment selected initial
				if (set_char == 0)
				{
					new_score.name[0]++;
				}
				else if (set_char == 1)
				{
					new_score.name[1]++;
				}
				else
				{
					new_score.name[2]++;
				}
				
				//Check for over-roll
				if (new_score.name[set_char] > 'Z') new_score.name[set_char] = 'A';
			}
		}
		else if (JOY_getDirection() == LEFT)
		{
			if (++iter > SET_NAME_DELAY)
			{
				iter = 0;
				
				//Change which initial to edit
				set_char--;
				
				// Check for under-roll
				if (set_char < 0) set_char = NAME_LENGTH-1;
			}
		}
		else if (JOY_getDirection() == RIGHT)
		{
			if (++iter > SET_NAME_DELAY)
			{
				iter = 0;
				
				//Change which initial to edit
				set_char++;
				
				// Check for over-roll
				if (set_char > NAME_LENGTH-1) set_char = 0;
			}
		}
		
		//if change, update screen
		if(iter == 0)
		{
			oled_goto_line(3);
			oled_goto_column(0);
			for (int i = 0; i < NAME_LENGTH; i++)
			{
				if (set_char == i)
				{
					oled_putchar_underscore(new_score.name[i]);
				}
				else
				{
					oled_putchar(new_score.name[i]);
				}
			}
		}
		_delay_ms(10);
	}
	
	return new_score;
}
コード例 #6
0
ファイル: OLED.c プロジェクト: slizer6/Byggern
void oled_submenu2(){
	volatile position joy_pos;
	joy_pos.button_pressed = 150;
	
	oled_clear_screen();
	
	/*FIRST MENU*/
	
	// header
	char header[] = "YOU ARE TRAPPED!";
	// entry one
	char entry1[] = "NEVER";
	// entry two
	char entry2[] = "GONNA";
	// entry three
	char entry3[] = "GIVE YOU UP";
	
	// arrow starts on entry one. Movement of joystick along Y axis changes this
	int arrow = menu_entry_one;
	int prev_arrow;
	int navigation_counter = 999;
	int started = 0;
	
	//Define menu pointer
	oled_pos(menu_entry_one, arrow_column);
	oled_print("<<");
	sound_play(ROLL);
	
	while(!started){
		oled_goto_line(menu_header);
		oled_print(header);
		oled_goto_line(menu_entry_one);
		oled_print(entry1);
		oled_goto_line(menu_entry_two);
		oled_print(entry2);
		oled_goto_line(menu_entry_three);
		oled_print(entry3);
		
		if(joystickDirY() != NEUTRAL){
			navigation_counter++;
		}
		else{
			navigation_counter = 1;
		}

		if(navigation_counter % 100 == 0){
			prev_arrow = arrow;
			if(joystickDirY() == UP){
				if(arrow == menu_entry_one){
					arrow = menu_entry_three;
				} else{
					arrow--;
				}
			}
			else if(joystickDirY() == DOWN){

				if(arrow == menu_entry_three){
					arrow = menu_entry_one;
				} else{
					arrow++;
				}
			}
			
			oled_goto_line(prev_arrow);
			oled_clear_line();
			
			oled_goto_line(arrow);
			
			oled_changeColumn(arrow_column);
			oled_print("<<");
			oled_changeColumn(0);

			navigation_counter++;
		}
		
		//Handle button presses
		joy_pos = joystickPos();
		
		if(joy_pos.button_pressed < button_margin){
			while(joy_pos.button_pressed < button_margin){ //Prevent button spam
			joy_pos = joystickPos();
		}
		started = 1;
		button_pressed = 0;
	}
}
return 0;
}
コード例 #7
0
ファイル: OLED.c プロジェクト: slizer6/Byggern
int oled_submenu1(){
	volatile position joy_pos;
	joy_pos.button_pressed = 150;
	
	oled_clear_screen();
	
	/*FIRST MENU*/
	
	// header
	char header[] = "MUSIC MENU";
	// entry one
	char entry1[] = "POKEMON";
	// entry two
	char entry2[] = "SUPER MARIO";
	// entry three
	char entry3[] = "ZELDA";
	
	// arrow starts on entry one. Movement of joystick along Y axis changes this
	int arrow = menu_entry_one;
	int prev_arrow;
	int navigation_counter = 999;
	int started = 0;
	
	//Define menu pointer
	oled_pos(menu_entry_one, arrow_column);
	oled_print("<<");
	sound_play(POKEMON);
	
	while(!started){
		oled_goto_line(menu_header);
		oled_print(header);
		oled_goto_line(menu_entry_one);
		oled_print(entry1);
		oled_goto_line(menu_entry_two);
		oled_print(entry2);
		oled_goto_line(menu_entry_three);
		oled_print(entry3);
		
		if(joystickDirY() != NEUTRAL){
			navigation_counter++;
		}
		else{
			navigation_counter = 1;
		}

		if(navigation_counter % 100 == 0){
			prev_arrow = arrow;
			if(joystickDirY() == UP){
				if(arrow == menu_entry_one){
					arrow = menu_entry_three;
				} else{
					arrow--;
				}
			}
			else if(joystickDirY() == DOWN){

				if(arrow == menu_entry_three){
					arrow = menu_entry_one;
				} else{
					arrow++;
				}
			}
			
			//Let user listen to currently selected song
			if(arrow == menu_entry_one){
				sound_play(POKEMON);
			} else if(arrow == menu_entry_two){
				sound_play(MARIO);
			} else if(arrow == menu_entry_three){
				sound_play(ZELDA);
			} else {
				sound_play(ROLL);
			}
			
			oled_goto_line(prev_arrow);
			oled_clear_line();
			
			oled_goto_line(arrow);
			
			oled_changeColumn(arrow_column);
			oled_print("<<");
			oled_changeColumn(0);

			navigation_counter++;
		}
		
		//Handle button presses
		joy_pos = joystickPos();
		
		if(joy_pos.button_pressed < button_margin){
			while(joy_pos.button_pressed < button_margin){ //Prevent button spam
				joy_pos = joystickPos();
			}
			
			if(arrow == menu_entry_one){
				ingame_song = POKEMON;
			} else if(arrow == menu_entry_two){
				ingame_song = MARIO;
			} else if(arrow == menu_entry_three){
				ingame_song = ZELDA;
			}
			started = 1;
			button_pressed = 0;
		}
	}
	return 0;
}
コード例 #8
0
ファイル: OLED.c プロジェクト: slizer6/Byggern
int oled_navigate(){
	volatile position joy_pos;
	joy_pos.button_pressed = 150;
	
	oled_clear_screen();
	
	/*FIRST MENU*/
	
	// header
	char header[] = "MENU";
	// entry one
	char entry1[] = "Start game";
	// entry two
	char entry2[] = "Change music";
	// entry three
	char entry3[] = "DO NOT PRESS!";
	
	// arrow starts on entry one. Movement of joystick along Y axis changes this
	int arrow = menu_entry_one;
	int prev_arrow;
	int navigation_counter = 999;
	int started = 0;
	

	
	//Define menu pointer
	oled_pos(menu_entry_one, arrow_column);
	oled_print("<<");
	sound_play(MENU);
	
	while(!started){
		oled_goto_line(menu_header);
		oled_print(header);
		oled_goto_line(menu_entry_one);
		oled_print(entry1);
		oled_goto_line(menu_entry_two);
		oled_print(entry2);
		oled_goto_line(menu_entry_three);
		oled_print(entry3);
		
		if(joystickDirY() != NEUTRAL){
			navigation_counter++;
		}
		else{
			navigation_counter = 1;
		}

		if(navigation_counter % 100 == 0){
			prev_arrow = arrow;
			if(joystickDirY() == UP){
				if(arrow == menu_entry_one){
					arrow = menu_entry_three;
				} else{
					arrow--;
				}
			}
			else if(joystickDirY() == DOWN){

				if(arrow == menu_entry_three){
					arrow = menu_entry_one;
				} else{
					arrow++;
				}
			}
			
			oled_goto_line(prev_arrow);
			oled_clear_line();
			
			oled_goto_line(arrow);
			oled_changeColumn(arrow_column);
			oled_print("<<");
			oled_changeColumn(0);

			navigation_counter++;
		}
		
		//Handle button presses
		joy_pos = joystickPos();
		
		if(joy_pos.button_pressed < button_margin){
			while(joy_pos.button_pressed < button_margin){ //Prevent button spam
				joy_pos = joystickPos();
			}
			
			if(arrow == menu_entry_one){
				started = 1; //A game request has been received, so we should stop interfacing
			} else if(arrow == menu_entry_two){
				oled_submenu1();
				oled_clear_screen();

				//Redefine menu pointer
				oled_goto_line(arrow);
				oled_changeColumn(arrow_column);
				oled_print("<<");
				oled_changeColumn(0);
				sound_play(MENU);
			} else if(arrow == menu_entry_three){
				oled_submenu2();
				oled_clear_screen();

				//Redefine menu pointer
				oled_goto_line(arrow);
				oled_changeColumn(arrow_column);
				oled_print("<<");
				oled_changeColumn(0);
				sound_play(MENU);
				
			}
			button_pressed = 0;
		}
	}
	return 0;
}
コード例 #9
0
ファイル: OLED.c プロジェクト: slizer6/Byggern
//Moves to desired line and column
void oled_pos(uint8_t row, uint8_t column){
	oled_goto_line(row);
	oled_changeColumn(column);
}