Table of Contents

Matei OPREA - Pian

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul este un mini pian ce folosește întreruperi pentru a cânta niște note. În funcție de ce buton este apăsat, acesta va “cânta” o frecvență.

Descriere generală

Schema bloc:

Hardware Design

Lista de piese:

- 7 butoane conectate pe portul A al controllerului

- Microcontroller - ATMEGA324PA

- 1 Buzzer conectat pe portul D al controllerului

Preturi:

1 placa + 1 placa aditionala: 16 LEI

10 butoane: 5 lei

1 buzzer: 4 lei

1 led rosu: 0.5 LEI

Fire legatura: 2 m - 8 LEI

Software Design

COD:

Definiții note, în hertzi:

float noteFreq[8] = {   261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25};

Activez butoanele și rezistența de pull-up

DDRA &= ~ ((1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3) | (1<<PA4) | (1<<PA5) | (1<<PA6) | (1<<PA7));
 
PORTA |= (1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3) | (1<<PA4) | (1<<PA5) | (1<<PA6) | (1<<PA7);

Inițializez timer-ul:

TCCR1B |= (1 << CS10) | (1 << WGM13) | (1 << WGM12);
TCCR1A |= (1 << WGM11) | (1 << COM1B1) | (1 << COM1A1);

Folosesc modul fast pwm cu prag pe icr1 si prescaler 1024.

După verific dacă se apasă vreun buton:

if(!(PINA & (1<<PA0))){
// do action here ...
}

Rezultate Obţinute

Nu am reușit să duc proiectul până la capăt deoarece nu am mai avut timp să mă duc după butoane. Mai îmi trebuiau două butoane pentru pitch-shift sus/jos.

Astfel, proiectul în momentul de față doar cântă niște note în funcție de ce butoane sunt apăsate.

Concluzii

Download

Download proiect

Bibliografie/Resurse

Laboratorul 3 de PM.

Atmega DataSheet