Ave Maria, cheia de graça, o Senhor é convosco, bendita sois vós entre as mulheres e bendito é o fruto do vosso ventre, Jesus. Santa Maria, Mãe de Deus, rogai por nós pecadores, agora e na hora da nossa morte. Amém.
sexta-feira, 6 de novembro de 2015
quinta-feira, 5 de novembro de 2015
Instituições do Direito - 05/11/2015
Instituições do Direito - 05/11/2015
A propriedade na Constituição Federal
Lucas T R Freitas
A propriedade na Constituição Federal
- móveis
- imóveis
- bens imateriais (nome...)
- Artigo 5º, XI, XXII, XXIII, XXIV, XXV, XXVI, XXVII, XXVIII, "a", "b", XXIX.
- Art. 5º Todos são iguais perante a lei, sem distinção de qualquer natureza, garantindo-se aos brasileiros e aos estrangeiros residentes no País a inviolabilidade do direito à vida, à liberdade, à igualdade, à segurança e à propriedade, nos termos seguintes:
- Casa:
- XI - a casa é asilo inviolável do indivíduo, ninguém nela podendo penetrar sem consentimento do morador, salvo em caso de flagrante delito ou desastre, ou para prestar socorro, ou, durante o dia, por determinação judicial; (Vide Lei nº 13.105, de 2015) (Vigência)
- Direito de Propriedade:
- XXII - é garantido o direito de propriedade;
- Função social da propriedade (princípio geral)
- XXIII - a propriedade atenderá a sua função social;
- Desapropriação:
- XXIV - a lei estabelecerá o procedimento para desapropriação por necessidade ou utilidade pública, ou por interesse social, mediante justa e prévia indenização em dinheiro, ressalvados os casos previstos nesta Constituição;
- Uso da propriedade particular pelo Estado:
- XXV - no caso de iminente perigo público, a autoridade competente poderá usar de propriedade particular, assegurada ao proprietário indenização ulterior, se houver dano;
- caso de royalties
- Até 25 hectares:
- XXVI - a pequena propriedade rural, assim definida em lei, desde que trabalhada pela família, não será objeto de penhora para pagamento de débitos decorrentes de sua atividade produtiva, dispondo a lei sobre os meios de financiar o seu desenvolvimento;
- Propriedade imaterial:
- XXVII - aos autores pertence o direito exclusivo de utilização, publicação ou reprodução de suas obras, transmissível aos herdeiros pelo tempo que a lei fixar;
- Propriedade imaterial:
- XXVIII - são assegurados, nos termos da lei:
a) a proteção às participações individuais em obras
coletivas e à reprodução da imagem e voz humanas, inclusive nas atividades desportivas;
b) o direito de fiscalização do aproveitamento econômico das obras que criarem ou de que participarem aos criadores, aos intérpretes e às respectivas representações sindicais e associativas; - Propriedade Industrial:
- XXIX - a lei assegurará aos autores de inventos industriais privilégio temporário para sua utilização, bem como proteção às criações industriais, à propriedade das marcas, aos nomes de empresas e a outros signos distintivos, tendo em vista o interesse social e o desenvolvimento tecnológico e econômico do País;
- a
- a
- Art. 170, II e III
- Art. 170. A ordem econômica, fundada na valorização do trabalho humano e na livre iniciativa, tem por fim assegurar a todos existência digna, conforme os ditames da justiça social, observados os seguintes princípios:
- Art. 182, Constituição Federal
- Política Urbana
- Plano Diretor Municipal (Urbano)
- Área urbana: loteamento com ou sem energia, ruas com calçadas, posto de saúde ou escola
- Art. 182. A política de desenvolvimento urbano, executada pelo Poder Público
municipal, conforme diretrizes gerais fixadas em lei, tem por objetivo ordenar o pleno
desenvolvimento das funções sociais da cidade e garantir o bem- estar de seus
habitantes.
(Regulamento)
§ 1º O plano diretor, aprovado pela
Câmara Municipal, obrigatório para cidades com mais de vinte mil habitantes, é o
instrumento básico da política de desenvolvimento e de expansão urbana.
§ 2º A propriedade urbana cumpre sua função social quando atende às exigências fundamentais de ordenação da cidade expressas no plano diretor.
§ 3º As desapropriações de imóveis urbanos serão feitas com prévia e justa indenização em dinheiro. - Art. 184, Constituição Federal
- Política agrária
- Art. 184. Compete à União desapropriar por interesse social,
para fins de reforma agrária, o imóvel rural que não esteja cumprindo sua função
social, mediante prévia e justa indenização em títulos da dívida agrária, com
cláusula de preservação do valor real, resgatáveis no prazo de até vinte anos, a
partir do segundo ano de sua emissão, e cuja utilização será definida em lei.
§ 1º As benfeitorias úteis e necessárias serão indenizadas em dinheiro.
§ 2º O decreto que declarar o imóvel como de interesse social, para fins de reforma agrária, autoriza a União a propor a ação de desapropriação.
§ 3º Cabe à lei complementar estabelecer procedimento contraditório especial, de rito sumário, para o processo judicial de desapropriação.
§ 4º O orçamento fixará anualmente o volume total de títulos da dívida agrária, assim como o montante de recursos para atender ao programa de reforma agrária no exercício.
§ 5º São isentas de impostos federais, estaduais e municipais as operações de transferência de imóveis desapropriados para fins de reforma agrária. - Desapropriação com pagamento em títulos da dívida agrária, resgatáveis em até 20 anos.
- Art. 225, Constituição Federal
- Art. 225. Todos têm direito ao meio ambiente ecologicamente equilibrado, bem de uso comum do povo e essencial à sadia qualidade de vida, impondo-se ao Poder Público e à coletividade o dever de defendê-lo e preservá- lo para as presentes e futuras gerações.
- Bem ambiental: bem de uso comum do povo
- indivisível
- não tem titular absoluto
- Patentes
- invenção
- 10 anos a 20 anos
- modelo de utilidade
- 7 anos a 15 anos
- Registro
- Desenho industrial
- 10 anos, podendo ser renovado por três períodos sucessivos de 5 anos
- Marcas
- pode ser renovada indefinidamente
- produtos
- serviços
- certificação (ISO, INMETRO)
- INPI
- Instituto Nacional de Propriedade Industrial
- As obras não podem estar no "Estado da Técnica" (conhecimento público)
Lucas T R Freitas
Legislação Tributária - 05/11/2015
Legislação Tributária - 05/11/2015
Administração Tributária
a) Fiscalização
b) Dívida Ativa
c) Certidão negativa
a) Fiscalização
artigo 37, XVIII e XXII, Constituição Federal
somente os aprovados em concurso público especificamente para atuar na área tributária.
sentença ou acórdão: títulos executivos judiciais
b) Dívida Ativa
Livro: os dados do contribuinte devedor
Certidão de Dívida Ativa (tem presunção relativa)
Matéria da prova até Anistia e Extinção
Lucas T R Freitas
Administração Tributária
a) Fiscalização
b) Dívida Ativa
c) Certidão negativa
a) Fiscalização
artigo 37, XVIII e XXII, Constituição Federal
somente os aprovados em concurso público especificamente para atuar na área tributária.
sentença ou acórdão: títulos executivos judiciais
b) Dívida Ativa
Livro: os dados do contribuinte devedor
Certidão de Dívida Ativa (tem presunção relativa)
- Título executivo extrajudicial (embasar a ação de execução fiscal).
- dar baixa do CPF no cartório, no INSS e na Receita Federal
- Título executivo deve ter:
- a) Certeza
- preenche todos os requisitos legais
- b) liquidez
- valor determinado
- c) exigibilidade / exigível
- só quando houver o vencimento / no vencimento
- Presunção Relativa: o devedor pode provar o contrário
- Presunção absoluta: não cabe prova em contrário
- se houver pendência - e se houver suspensão da exigência do crédito tributário
- sairá uma certidão positivo com efeito de negativa (que vale como se fosse uma certidão negativa)
- exemplo: um IPTU atrasado que foi parcelado, e o parcelamento está em dia.
- Casos de moratória, depósito do montante integral, reclamação ou recurso administrativo, concessão de medida liminar em mandado de segurança, conceção de medida liminar ou de tutela antecipada em outras espécies de ações judiciais, parcelamento.
- Artigo 151, Código Tributário Nacional
- "Art. 151. Suspendem a exigibilidade do crédito tributário:I - moratória;II - o depósito do seu montante integral;III - as reclamações e os recursos, nos termos das leis reguladoras do processo tributário administrativo;IV - a concessão de medida liminar em mandado de segurança.V – a concessão de medida liminar ou de tutela antecipada, em outras espécies de ação judicial; (Incluído pela Lcp nº 104, de 2001)Parágrafo único. O disposto neste artigo não dispensa o cumprimento das obrigações assessórios dependentes da obrigação principal cujo crédito seja suspenso, ou dela conseqüentes."
Matéria da prova até Anistia e Extinção
Lucas T R Freitas
quarta-feira, 4 de novembro de 2015
Logística e Cadeia de Suprimentos - 04/11/2015
Logística e Cadeia de Suprimentos - 04/11/2015
Supply Chain (Cadeia de Suprimentos):
Centro de Distribuição (CD):
Lucas T R Freitas
Supply Chain (Cadeia de Suprimentos):
- redução dos estoques
- é necessário investir em tecnologia
- pode haver conflitos de cultura (diferenças entre os parceiros na cadeia de suprimentos)
Centro de Distribuição (CD):
- serve como concentrador das operações logísticas
- Organiza, estoca, armazena, realizam beneficiamentos (montam kits, montam componentes)
- maior comprometimento dos fornecedores (visitas mais frequentes)
- menor grau de controle pelos compradores
- Endereça as mercadorias (Rua, andar da prateleira...)
- O comprador deve entender as características dos produtos
- Selecionar, avaliar e desenvolver novos fornecedores
- Negociar preços
- Emitir ordens de compras
- EDI (Electronic Data Interchange - Intercâmbio eletrônico de dados)
- E-commerce (compras via internet)
- É mais barato produzir ou adquirir? Existe informação estratégica na fabricação (informação sigilosa)?
- Ceder a outra empresa determinadas tarefas
- Matéria-prima
- Materiais auxiliares
- Produtos em processo
- Produtos acabados
- obter o material certo, no ponto certo, no momento certo, através do planejamento das prioridades e o MPS (Master Production Schedule - Programação Mestra de Produção)
Lucas T R Freitas
Programando Arduíno com Sensor Ultrassom para enviar notas musicais MIDI
Programando Arduíno com Sensor Ultrassom para enviar notas musicais MIDI
Para a disciplina Projeto Interdisciplinar de Engenharia II (UCL - Serra - ES), foi requisitado fazer um instrumento musical utilizando Arduíno.
Optei por fazer uma "Sanfona Ultrassônica", com dois sensores Ultrassom HCSR04. Utilizei um Arduíno MEGA 2560.
-- Medição das distâncias --
Comecei a pesquisar em vários sites sobre como medir a distância usando Arduíno e sensores ultrassom. Consegui informações relevantes no post "HC-SR04 com Arduíno: Colocando o ultrassom para funcionar", do seguinte blog: http://blog.repeatdomiau.com.br/miadas/arduino-com-ultrassom-hcsr04.
Enfim, cheguei ao seguinte código para medir as distâncias utilizando os dois sensores ultrassom:
Código Arduíno para medir as distâncias usando dois sensores ultrassom (entre aspas - retirar as aspas se for utilizar):
"
#define echoPin1 13 //Pino 13 recebe o pulso do echo
#define trigPin1 12 //Pino 12 envia o pulso para gerar o echo
#define echoPin2 9 //Pino 9 recebe o pulso do echo
#define trigPin2 8 //Pino 8 envia o pulso para gerar o echo
void setup()
{
Serial.begin(9600); //inicia a porta serial
pinMode(echoPin1, INPUT); // define o pino 13 como entrada (recebe)
pinMode(trigPin1, OUTPUT); // define o pino 12 como saida (envia)
pinMode(echoPin2, INPUT); // define o pino 9 como entrada (recebe)
pinMode(trigPin2, OUTPUT); // define o pino 8 como saida (envia)
}
void loop()
{
//seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin1, LOW);
//delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin1, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 12 com pulso baixo novamente
digitalWrite(trigPin1, LOW);
//pulseIn lê o tempo entre a chamada e o pino entrar em high
long duration1 = pulseIn(echoPin1,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia1 = duration1 /29 / 2 ;
Serial.print("Distancia sensor 1 em CM: ");
Serial.println(distancia1);
delay(1000); //espera 1 segundo para fazer a leitura novamente
//seta o pino 8 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin2, LOW);
//delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 8 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin2, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 8 com pulso baixo novamente
digitalWrite(trigPin2, LOW);
//pulseIn lê o tempo entre a chamada e o pino entrar em high
long duration2 = pulseIn(echoPin2,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia2 = duration2 /29 / 2 ;
Serial.print("Distancia sensor 2 em CM: ");
Serial.println(distancia2);
delay(1000); //espera 1 segundo para fazer a leitura novamente
}
"
Os sensores ultrassom HCSR04 tem quatro conexões: 5V, GND, Trigger e ECHO. As conexões 5V e GND são para alimentação de energia. A conexão Trigger (gatilho) é para a emissão do sinal ultrassom. A conexão ECHO detecta o sinal ultrassom após ser refletido em alguma superfície.
Como o sinal vai e volta, é necessário dividir a distância por dois. Os demais ajustes para chegar à distância em centímetros estão descritos no código acima.
O código acima utilizou a porta serial 9600 e os valores de medições podem ser visualizados utilizando-se o "Monitor Serial" do Arduíno (Arduíno - Ferramentas - Monitor Serial // ou pressionando Ctrl + Shift + M).
Para a medição das distâncias, é necessário utilizar o programa do Arduíno (gratuito, disponível em https://www.arduino.cc/), o Arduíno (placa - utilizei o Arduíno MEGA 2560), o cabo USB que vem com o Arduíno, os dois sensores ultrassom e o computador. A função "Monitor Serial" do programa do Arduíno mostra as distâncias em cm (conforme o código acima).
-- Emitindo as notas MIDI com um sensor ultrassom --
Com as medições prontas, resolvi inserir a emissão de notas musicais MIDI conforme as distâncias medidas pelos sensores ultrassom. Voltei a estudar vários sites. Aqui vão alguns links para ajudar quem queira fazer um instrumento musical (encontrei de baterias, xilofones, instrumentos para música eletrônica):
Uma nota importante é que a porta Serial para usar o Hairless usa o número 115200. Gastei muito tempo tentando fazer as notas MIDI saírem usando outros números de portas e não consegui. É possível trocar o número Baud rate (115200) no Hairless: Hairless >> File >> Preferences >> Baud rate.
Olhando os códigos que encontrei, consegui fazer o som funcionar com várias notas utilizando o código abaixo. Utilizei as notas de 68 a 91, para uma distância de 50 cm. Coloquei a nota 68 para os primeiros 2 cm. A cada 2 cm a mais de distância do ultrassom, a nota aumenta em 1 número. Utilizei a função "if" e "else if" para delimitar as distâncias. Caso alguém queira tentar, acredito que seja possível fazer a variação de notas conforme a distância utilizando a função "for".
Segue abaixo o código que funcionou para um sensor Ultrassom. O som do instrumento musical pode ser escolhido no programa que executa as notas MIDI (como o VMPK MIDI piano Keyboard, por exemplo).
Código Arduíno que funcionou com um sensor ultrassom (entre aspas - retirar as aspas se for utilizar):
"
#define echoPin 13 //Pino 13 recebe o pulso do echo
#define trigPin 12 //Pino 12 envia o pulso para gerar o echo
const byte noteOffCommand = 0;
const byte noteOnCommand = 1;
byte channel = 0; // Channel 1 (0-15 selects channel 1-16)
//byte pitchByte = 69; // A4 = Middle A = 440 Hz (Piano keyboard runs from 21/A0 to 108/C8)
//byte velocityByte = 127; // Medium Velocity/Volume (value from 0 to 127)
void setup()
{
Serial.begin(115200); //inicia a porta serial 115200 para o HairLess
pinMode(echoPin, INPUT); // define o pino 13 como entrada (recebe)
pinMode(trigPin, OUTPUT); // define o pino 12 como saida (envia)
}
void loop()
{
//seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin, LOW);
// delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 12 com pulso baixo novamente
digitalWrite(trigPin, LOW);
//pulseInt lê o tempo entre a chamada e o pino entrar em high
long duration = pulseIn(echoPin,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia = duration /29 / 2 ;
if (distancia >= 50){
delay(1000); // Tempo de espera duration
}
else if (distancia <= 2){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(68));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(68));
Serial.write(byte(0));
}
else if ((distancia > 2) && (distancia <= 4)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(69));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(69));
Serial.write(byte(0));
}
else if ((distancia > 4) && (distancia <= 6)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(70));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(70));
Serial.write(byte(0));
}
else if ((distancia > 6) && (distancia <= 8)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(71));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(71));
Serial.write(byte(0));
}
else if ((distancia > 8) && (distancia <= 10)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(72));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(72));
Serial.write(byte(0));
}
else if ((distancia > 12) && (distancia < 14)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(73));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(73));
Serial.write(byte(0));
}
else if ((distancia > 14) && (distancia <= 16)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(74));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(74));
Serial.write(byte(0));
}
else if ((distancia > 16) && (distancia <= 18)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(75));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(75));
Serial.write(byte(0));
}
else if ((distancia > 18) && (distancia <= 20)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(76));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(76));
Serial.write(byte(0));
}
else if ((distancia > 20) && (distancia <= 22)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(77));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(77));
Serial.write(byte(0));
}
else if ((distancia > 22) && (distancia <= 24)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(78));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(78));
Serial.write(byte(0));
}
else if ((distancia > 24) && (distancia <= 26)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(79));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(79));
Serial.write(byte(0));
}
else if ((distancia > 26) && (distancia <= 28)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(80));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(80));
Serial.write(byte(0));
}
else if ((distancia > 28) && (distancia <= 30)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(81));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(81));
Serial.write(byte(0));
}
else if ((distancia > 30) && (distancia <= 32)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(82));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(82));
Serial.write(byte(0));
}
else if ((distancia > 32) && (distancia <= 34)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(83));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(83));
Serial.write(byte(0));
}
else if ((distancia > 34) && (distancia <= 36)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(84));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(84));
Serial.write(byte(0));
}
else if ((distancia > 36) && (distancia <= 38)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(85));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(85));
Serial.write(byte(0));
}
else if ((distancia > 38) && (distancia <= 40)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(86));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(86));
Serial.write(byte(0));
}
else if ((distancia > 40) && (distancia <= 42)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(87));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(87));
Serial.write(byte(0));
}
else if ((distancia > 42) && (distancia <= 44)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(88));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(88));
Serial.write(byte(0));
}
else if ((distancia > 44) && (distancia <= 46)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(89));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(89));
Serial.write(byte(0));
}
else if ((distancia > 46) && (distancia <= 48)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(90));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(90));
Serial.write(byte(0));
}
else if ((distancia > 48) && (distancia < 50)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(91));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(91));
Serial.write(byte(0));
}
//delay(200); //espera 200 milissegundos para fazer a leitura novamente
}
"
-- Emitindo as notas MIDI com dois sensores ultrassom --
Após fazer as notas MIDI funcionarem com um sensor ultrassom, consegui colocar os dois sensores ultrassom para funcionar. No código abaixo está um sensor relacionado com o canal 1 e o outro com o canal 2, ou seja, podem ser ligados dois tipos de sons instrumentos musicais, um em cada canal.
Para o primeiro sensor, as notas variam de 68 a 91. Para o segundo sensor, as notas variam de 68 a 45.
Travei a distância máxima de cada sensor ultrassom em 50 cm para a emissão de notas.
Conforme a necessidade de cada projeto, o código poderá ser alterado.
Código Arduíno que funcionou com dois sensores ultrassom (entre aspas - retirar as aspas se for utilizar):
"
#define echoPin2 9 //Pino 9 recebe o pulso do echo
#define trigPin2 8 //Pino 8 envia o pulso para gerar o echo
#define echoPin 13 //Pino 13 recebe o pulso do echo
#define trigPin 12 //Pino 12 envia o pulso para gerar o echo
const byte noteOffCommand = 0;
const byte noteOnCommand = 1;
byte channel = 0; // Channel 1 (0-15 selects channel 1-16)
byte channel2 = 1; // Channel 2 (0-15 selects channel 1-16)
//byte pitchByte = 69; // A4 = Middle A = 440 Hz (Piano keyboard runs from 21/A0 to 108/C8)
//byte velocityByte = 127; // Medium Velocity/Volume (value from 0 to 127)
void setup()
{
Serial.begin(115200); //inicia a porta serial 115200 para o HairLess
pinMode(echoPin, INPUT); // define o pino 13 como entrada (recebe)
pinMode(trigPin, OUTPUT); // define o pino 12 como saida (envia)
pinMode(echoPin2, INPUT); // define o pino 9 como entrada (recebe)
pinMode(trigPin2, OUTPUT); // define o pino 8 como saida (envia)
}
void loop()
{
// -- ULTRASSOM SENSOR 1 -- Medição --
//seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin, LOW);
// delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 12 com pulso baixo novamente
digitalWrite(trigPin, LOW);
//pulseInt lê o tempo entre a chamada e o pino entrar em high
long duration = pulseIn(echoPin,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia = duration /29 / 2 ;
// -- NOTAS MIDI -- ULTRASSOM SENSOR 1 --
if (distancia >= 50){
delay(300); // Tempo de espera 300 milissegundos
}
else if (distancia <= 2){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(68));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(68));
Serial.write(byte(0));
}
else if ((distancia > 2) && (distancia <= 4)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(69));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(69));
Serial.write(byte(0));
}
else if ((distancia > 4) && (distancia <= 6)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(70));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(70));
Serial.write(byte(0));
}
else if ((distancia > 6) && (distancia <= 8)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(71));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(71));
Serial.write(byte(0));
}
else if ((distancia > 8) && (distancia <= 10)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(72));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(72));
Serial.write(byte(0));
}
else if ((distancia > 12) && (distancia < 14)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(73));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(73));
Serial.write(byte(0));
}
else if ((distancia > 14) && (distancia <= 16)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(74));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(74));
Serial.write(byte(0));
}
else if ((distancia > 16) && (distancia <= 18)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(75));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(75));
Serial.write(byte(0));
}
else if ((distancia > 18) && (distancia <= 20)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(76));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(76));
Serial.write(byte(0));
}
else if ((distancia > 20) && (distancia <= 22)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(77));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(77));
Serial.write(byte(0));
}
else if ((distancia > 22) && (distancia <= 24)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(78));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(78));
Serial.write(byte(0));
}
else if ((distancia > 24) && (distancia <= 26)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(79));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(79));
Serial.write(byte(0));
}
else if ((distancia > 26) && (distancia <= 28)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(80));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(80));
Serial.write(byte(0));
}
else if ((distancia > 28) && (distancia <= 30)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(81));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(81));
Serial.write(byte(0));
}
else if ((distancia > 30) && (distancia <= 32)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(82));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(82));
Serial.write(byte(0));
}
else if ((distancia > 32) && (distancia <= 34)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(83));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(83));
Serial.write(byte(0));
}
else if ((distancia > 34) && (distancia <= 36)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(84));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(84));
Serial.write(byte(0));
}
else if ((distancia > 36) && (distancia <= 38)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(85));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(85));
Serial.write(byte(0));
}
else if ((distancia > 38) && (distancia <= 40)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(86));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(86));
Serial.write(byte(0));
}
else if ((distancia > 40) && (distancia <= 42)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(87));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(87));
Serial.write(byte(0));
}
else if ((distancia > 42) && (distancia <= 44)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(88));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(88));
Serial.write(byte(0));
}
else if ((distancia > 44) && (distancia <= 46)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(89));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(89));
Serial.write(byte(0));
}
else if ((distancia > 46) && (distancia <= 48)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(90));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(90));
Serial.write(byte(0));
}
else if ((distancia > 48) && (distancia < 50)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(91));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(91));
Serial.write(byte(0));
}
// -- ULTRASSOM SENSOR 2 -- Medição --
//seta o pino 8 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin2, LOW);
//delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 8 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin2, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 8 com pulso baixo novamente
digitalWrite(trigPin2, LOW);
//pulseIn lê o tempo entre a chamada e o pino entrar em high
long duration2 = pulseIn(echoPin2,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia2 = duration2 /29 / 2 ;
// -- NOTAS MIDI -- ULTRASSOM SENSOR 2 --
if (distancia2 >= 50){
delay(300); // Tempo de espera 300 milissegundos
}
else if (distancia2 <= 2){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(68));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(68));
Serial.write(byte(0));
}
else if ((distancia2 > 2) && (distancia2 <= 4)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(67));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(67));
Serial.write(byte(0));
}
else if ((distancia2 > 4) && (distancia2 <= 6)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(66));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(66));
Serial.write(byte(0));
}
else if ((distancia2 > 6) && (distancia2 <= 8)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(65));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(65));
Serial.write(byte(0));
}
else if ((distancia2 > 8) && (distancia2 <= 10)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(64));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(64));
Serial.write(byte(0));
}
else if ((distancia2 > 12) && (distancia2 < 14)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(63));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(63));
Serial.write(byte(0));
}
else if ((distancia2 > 14) && (distancia2 <= 16)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(62));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(62));
Serial.write(byte(0));
}
else if ((distancia2 > 16) && (distancia2 <= 18)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(61));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(61));
Serial.write(byte(0));
}
else if ((distancia2 > 18) && (distancia2 <= 20)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(60));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(60));
Serial.write(byte(0));
}
else if ((distancia2 > 20) && (distancia2 <= 22)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(59));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(59));
Serial.write(byte(0));
}
else if ((distancia2 > 22) && (distancia2 <= 24)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(58));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(58));
Serial.write(byte(0));
}
else if ((distancia2 > 24) && (distancia2 <= 26)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(57));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(57));
Serial.write(byte(0));
}
else if ((distancia2 > 26) && (distancia2 <= 28)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(56));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(56));
Serial.write(byte(0));
}
else if ((distancia2 > 28) && (distancia2 <= 30)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(55));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(55));
Serial.write(byte(0));
}
else if ((distancia2 > 30) && (distancia2 <= 32)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(54));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(54));
Serial.write(byte(0));
}
else if ((distancia2 > 32) && (distancia2 <= 34)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(53));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(53));
Serial.write(byte(0));
}
else if ((distancia2 > 34) && (distancia2 <= 36)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(52));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(52));
Serial.write(byte(0));
}
else if ((distancia2 > 36) && (distancia2 <= 38)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(51));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(51));
Serial.write(byte(0));
}
else if ((distancia2 > 38) && (distancia2 <= 40)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(50));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(50));
Serial.write(byte(0));
}
else if ((distancia2 > 40) && (distancia2 <= 42)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(49));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(49));
Serial.write(byte(0));
}
else if ((distancia2 > 42) && (distancia2 <= 44)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(48));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(48));
Serial.write(byte(0));
}
else if ((distancia2 > 44) && (distancia2 <= 46)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(47));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(47));
Serial.write(byte(0));
}
else if ((distancia2 > 46) && (distancia2 <= 48)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(46));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(46));
Serial.write(byte(0));
}
else if ((distancia2 > 48) && (distancia2 < 50)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(45));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(45));
Serial.write(byte(0));
}
//delay(200); //espera 200 milissegundos para fazer a leitura novamente
}
"
-- Emitindo as notas MIDI com dois sensores ultrassom -- Código resumido --
Uma outra lógica mais curta do que utilizar várias funções "if" e "else if" pode ser feita se atrelarmos a variação de distância com a formação da nota. Abaixo segue um código mais curto seguindo a ideia. Cada sensor está relacionado com um canal de emissão de notas MIDI: um sensor com o canal 1 e o outro com o canal 2.
Código Arduíno mais curto que funcionou com dois sensores ultrassom (entre aspas - retirar as aspas se for utilizar):
"
#define echoPin2 9 //Pino 9 recebe o pulso do echo
#define trigPin2 8 //Pino 8 envia o pulso para gerar o echo
#define echoPin 13 //Pino 13 recebe o pulso do echo
#define trigPin 12 //Pino 12 envia o pulso para gerar o echo
const byte noteOffCommand = 0;
const byte noteOnCommand = 1;
byte channel = 0; // Channel 1 (0-15 selects channel 1-16)
byte channel2 = 1; // Channel 2 (0-15 selects channel 1-16)
//byte pitchByte = 69; // A4 = Middle A = 440 Hz (Piano keyboard runs from 21/A0 to 108/C8)
//byte velocityByte = 127; // Medium Velocity/Volume (value from 0 to 127)
void setup()
{
Serial.begin(115200); //inicia a porta serial 115200 para o HairLess
pinMode(echoPin, INPUT); // define o pino 13 como entrada (recebe)
pinMode(trigPin, OUTPUT); // define o pino 12 como saida (envia)
pinMode(echoPin2, INPUT); // define o pino 9 como entrada (recebe)
pinMode(trigPin2, OUTPUT); // define o pino 8 como saida (envia)
}
void loop()
{
// -- ULTRASSOM SENSOR 1 -- Medição --
//seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin, LOW);
// delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 12 com pulso baixo novamente
digitalWrite(trigPin, LOW);
//pulseInt lê o tempo entre a chamada e o pino entrar em high
long duration = pulseIn(echoPin,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia = duration /29 / 2 ;
// -- ULTRASSOM SENSOR 2 -- Medição --
//seta o pino 8 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin2, LOW);
//delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 8 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin2, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 8 com pulso baixo novamente
digitalWrite(trigPin2, LOW);
//pulseIn lê o tempo entre a chamada e o pino entrar em high
long duration2 = pulseIn(echoPin2,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia2 = duration2 /29 / 2 ;
// -- NOTAS MIDI -- ULTRASSOM SENSOR 1 --
if (distancia >= 50){
delay(300); // Tempo de espera 300 milissegundos
}
else {
int nota = distancia + 68;
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(nota)); //
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(nota));
Serial.write(byte(0));
}
// -- NOTAS MIDI -- ULTRASSOM SENSOR 2 --
if (distancia2 >= 50){
delay(300); // Tempo de espera 300 milissegundos
}
else {
int nota2 = 68 - distancia2;
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(nota2));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(nota2));
Serial.write(byte(0));
}
}
//delay(200); //espera 200 milissegundos para fazer a leitura novamente
Lucas T R Freitas
Para a disciplina Projeto Interdisciplinar de Engenharia II (UCL - Serra - ES), foi requisitado fazer um instrumento musical utilizando Arduíno.
Optei por fazer uma "Sanfona Ultrassônica", com dois sensores Ultrassom HCSR04. Utilizei um Arduíno MEGA 2560.
-- Medição das distâncias --
Comecei a pesquisar em vários sites sobre como medir a distância usando Arduíno e sensores ultrassom. Consegui informações relevantes no post "HC-SR04 com Arduíno: Colocando o ultrassom para funcionar", do seguinte blog: http://blog.repeatdomiau.com.br/miadas/arduino-com-ultrassom-hcsr04.
Enfim, cheguei ao seguinte código para medir as distâncias utilizando os dois sensores ultrassom:
Código Arduíno para medir as distâncias usando dois sensores ultrassom (entre aspas - retirar as aspas se for utilizar):
"
#define echoPin1 13 //Pino 13 recebe o pulso do echo
#define trigPin1 12 //Pino 12 envia o pulso para gerar o echo
#define echoPin2 9 //Pino 9 recebe o pulso do echo
#define trigPin2 8 //Pino 8 envia o pulso para gerar o echo
void setup()
{
Serial.begin(9600); //inicia a porta serial
pinMode(echoPin1, INPUT); // define o pino 13 como entrada (recebe)
pinMode(trigPin1, OUTPUT); // define o pino 12 como saida (envia)
pinMode(echoPin2, INPUT); // define o pino 9 como entrada (recebe)
pinMode(trigPin2, OUTPUT); // define o pino 8 como saida (envia)
}
void loop()
{
//seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin1, LOW);
//delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin1, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 12 com pulso baixo novamente
digitalWrite(trigPin1, LOW);
//pulseIn lê o tempo entre a chamada e o pino entrar em high
long duration1 = pulseIn(echoPin1,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia1 = duration1 /29 / 2 ;
Serial.print("Distancia sensor 1 em CM: ");
Serial.println(distancia1);
delay(1000); //espera 1 segundo para fazer a leitura novamente
//seta o pino 8 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin2, LOW);
//delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 8 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin2, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 8 com pulso baixo novamente
digitalWrite(trigPin2, LOW);
//pulseIn lê o tempo entre a chamada e o pino entrar em high
long duration2 = pulseIn(echoPin2,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia2 = duration2 /29 / 2 ;
Serial.print("Distancia sensor 2 em CM: ");
Serial.println(distancia2);
delay(1000); //espera 1 segundo para fazer a leitura novamente
}
"
Os sensores ultrassom HCSR04 tem quatro conexões: 5V, GND, Trigger e ECHO. As conexões 5V e GND são para alimentação de energia. A conexão Trigger (gatilho) é para a emissão do sinal ultrassom. A conexão ECHO detecta o sinal ultrassom após ser refletido em alguma superfície.
Como o sinal vai e volta, é necessário dividir a distância por dois. Os demais ajustes para chegar à distância em centímetros estão descritos no código acima.
O código acima utilizou a porta serial 9600 e os valores de medições podem ser visualizados utilizando-se o "Monitor Serial" do Arduíno (Arduíno - Ferramentas - Monitor Serial // ou pressionando Ctrl + Shift + M).
Para a medição das distâncias, é necessário utilizar o programa do Arduíno (gratuito, disponível em https://www.arduino.cc/), o Arduíno (placa - utilizei o Arduíno MEGA 2560), o cabo USB que vem com o Arduíno, os dois sensores ultrassom e o computador. A função "Monitor Serial" do programa do Arduíno mostra as distâncias em cm (conforme o código acima).
-- Emitindo as notas MIDI com um sensor ultrassom --
Com as medições prontas, resolvi inserir a emissão de notas musicais MIDI conforme as distâncias medidas pelos sensores ultrassom. Voltei a estudar vários sites. Aqui vão alguns links para ajudar quem queira fazer um instrumento musical (encontrei de baterias, xilofones, instrumentos para música eletrônica):
- Xilofone com sensores de pressão (piezo): http://www.instructables.com/id/Arduino-Xylophone/
- Outro xilofone com sensores de pressão (piezo): http://www.instructables.com/id/Arduino-Uno-Xylophone/
- Musical MIDI shoes: http://www.instructables.com/id/Musical-MIDI-Shoes/
- Tambores MIDI com Arduíno: http://www.instructables.com/id/MIDI-Arduino-Drums/
- Projeto Mini Bateria Eletrônica: http://labdegaragem.com/profiles/blog/show?id=6223006%3ABlogPost%3A150112&commentId=6223006%3AComment%3A195737
- O que é MIDI: http://www.instructables.com/id/What-is-MIDI/
- Fazendo a saída de MIDI usando um Arduíno: https://itp.nyu.edu/physcomp/labs/labs-serial-communication/lab-midi-output-using-an-arduino/
- Programa MIDI-OX para monitorar o sinal MIDI: http://www.midiox.com/
- Explicação sobre o MIDI-OX: http://www.musitec.com.br/revistas/?c=66
- Enviando sinais MIDI: http://forum.arduino.cc/index.php?topic=84651.0
- Vários vídeos e anotações minhas: http://lucastrfreitas.blogspot.com.br/search/label/Projeto%20Interdisciplinar%20de%20Engenharia%20II
- Programa do Arduíno (para escrever o código a ser gravado no Arduíno):
- LoopMIDI (é um "cabo virtual" para conexões MIDI):
- Hairless (faz uma ponte para aparelhos que usam a conexão SERIAL - é um Serial Bridge):
- MIDI-OX (monitoramento das notas MIDI):
- VMPK MIDI Piano Keyboard (execução das notas MIDI)
Uma nota importante é que a porta Serial para usar o Hairless usa o número 115200. Gastei muito tempo tentando fazer as notas MIDI saírem usando outros números de portas e não consegui. É possível trocar o número Baud rate (115200) no Hairless: Hairless >> File >> Preferences >> Baud rate.
Olhando os códigos que encontrei, consegui fazer o som funcionar com várias notas utilizando o código abaixo. Utilizei as notas de 68 a 91, para uma distância de 50 cm. Coloquei a nota 68 para os primeiros 2 cm. A cada 2 cm a mais de distância do ultrassom, a nota aumenta em 1 número. Utilizei a função "if" e "else if" para delimitar as distâncias. Caso alguém queira tentar, acredito que seja possível fazer a variação de notas conforme a distância utilizando a função "for".
Segue abaixo o código que funcionou para um sensor Ultrassom. O som do instrumento musical pode ser escolhido no programa que executa as notas MIDI (como o VMPK MIDI piano Keyboard, por exemplo).
Código Arduíno que funcionou com um sensor ultrassom (entre aspas - retirar as aspas se for utilizar):
"
#define echoPin 13 //Pino 13 recebe o pulso do echo
#define trigPin 12 //Pino 12 envia o pulso para gerar o echo
const byte noteOffCommand = 0;
const byte noteOnCommand = 1;
byte channel = 0; // Channel 1 (0-15 selects channel 1-16)
//byte pitchByte = 69; // A4 = Middle A = 440 Hz (Piano keyboard runs from 21/A0 to 108/C8)
//byte velocityByte = 127; // Medium Velocity/Volume (value from 0 to 127)
void setup()
{
Serial.begin(115200); //inicia a porta serial 115200 para o HairLess
pinMode(echoPin, INPUT); // define o pino 13 como entrada (recebe)
pinMode(trigPin, OUTPUT); // define o pino 12 como saida (envia)
}
void loop()
{
//seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin, LOW);
// delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 12 com pulso baixo novamente
digitalWrite(trigPin, LOW);
//pulseInt lê o tempo entre a chamada e o pino entrar em high
long duration = pulseIn(echoPin,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia = duration /29 / 2 ;
if (distancia >= 50){
delay(1000); // Tempo de espera duration
}
else if (distancia <= 2){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(68));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(68));
Serial.write(byte(0));
}
else if ((distancia > 2) && (distancia <= 4)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(69));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(69));
Serial.write(byte(0));
}
else if ((distancia > 4) && (distancia <= 6)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(70));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(70));
Serial.write(byte(0));
}
else if ((distancia > 6) && (distancia <= 8)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(71));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(71));
Serial.write(byte(0));
}
else if ((distancia > 8) && (distancia <= 10)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(72));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(72));
Serial.write(byte(0));
}
else if ((distancia > 12) && (distancia < 14)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(73));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(73));
Serial.write(byte(0));
}
else if ((distancia > 14) && (distancia <= 16)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(74));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(74));
Serial.write(byte(0));
}
else if ((distancia > 16) && (distancia <= 18)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(75));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(75));
Serial.write(byte(0));
}
else if ((distancia > 18) && (distancia <= 20)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(76));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(76));
Serial.write(byte(0));
}
else if ((distancia > 20) && (distancia <= 22)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(77));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(77));
Serial.write(byte(0));
}
else if ((distancia > 22) && (distancia <= 24)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(78));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(78));
Serial.write(byte(0));
}
else if ((distancia > 24) && (distancia <= 26)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(79));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(79));
Serial.write(byte(0));
}
else if ((distancia > 26) && (distancia <= 28)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(80));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(80));
Serial.write(byte(0));
}
else if ((distancia > 28) && (distancia <= 30)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(81));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(81));
Serial.write(byte(0));
}
else if ((distancia > 30) && (distancia <= 32)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(82));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(82));
Serial.write(byte(0));
}
else if ((distancia > 32) && (distancia <= 34)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(83));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(83));
Serial.write(byte(0));
}
else if ((distancia > 34) && (distancia <= 36)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(84));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(84));
Serial.write(byte(0));
}
else if ((distancia > 36) && (distancia <= 38)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(85));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(85));
Serial.write(byte(0));
}
else if ((distancia > 38) && (distancia <= 40)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(86));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(86));
Serial.write(byte(0));
}
else if ((distancia > 40) && (distancia <= 42)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(87));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(87));
Serial.write(byte(0));
}
else if ((distancia > 42) && (distancia <= 44)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(88));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(88));
Serial.write(byte(0));
}
else if ((distancia > 44) && (distancia <= 46)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(89));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(89));
Serial.write(byte(0));
}
else if ((distancia > 46) && (distancia <= 48)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(90));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(90));
Serial.write(byte(0));
}
else if ((distancia > 48) && (distancia < 50)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(91));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(91));
Serial.write(byte(0));
}
//delay(200); //espera 200 milissegundos para fazer a leitura novamente
}
"
-- Emitindo as notas MIDI com dois sensores ultrassom --
Após fazer as notas MIDI funcionarem com um sensor ultrassom, consegui colocar os dois sensores ultrassom para funcionar. No código abaixo está um sensor relacionado com o canal 1 e o outro com o canal 2, ou seja, podem ser ligados dois tipos de sons instrumentos musicais, um em cada canal.
Para o primeiro sensor, as notas variam de 68 a 91. Para o segundo sensor, as notas variam de 68 a 45.
Travei a distância máxima de cada sensor ultrassom em 50 cm para a emissão de notas.
Conforme a necessidade de cada projeto, o código poderá ser alterado.
Código Arduíno que funcionou com dois sensores ultrassom (entre aspas - retirar as aspas se for utilizar):
"
#define echoPin2 9 //Pino 9 recebe o pulso do echo
#define trigPin2 8 //Pino 8 envia o pulso para gerar o echo
#define echoPin 13 //Pino 13 recebe o pulso do echo
#define trigPin 12 //Pino 12 envia o pulso para gerar o echo
const byte noteOffCommand = 0;
const byte noteOnCommand = 1;
byte channel = 0; // Channel 1 (0-15 selects channel 1-16)
byte channel2 = 1; // Channel 2 (0-15 selects channel 1-16)
//byte pitchByte = 69; // A4 = Middle A = 440 Hz (Piano keyboard runs from 21/A0 to 108/C8)
//byte velocityByte = 127; // Medium Velocity/Volume (value from 0 to 127)
void setup()
{
Serial.begin(115200); //inicia a porta serial 115200 para o HairLess
pinMode(echoPin, INPUT); // define o pino 13 como entrada (recebe)
pinMode(trigPin, OUTPUT); // define o pino 12 como saida (envia)
pinMode(echoPin2, INPUT); // define o pino 9 como entrada (recebe)
pinMode(trigPin2, OUTPUT); // define o pino 8 como saida (envia)
}
void loop()
{
// -- ULTRASSOM SENSOR 1 -- Medição --
//seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin, LOW);
// delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 12 com pulso baixo novamente
digitalWrite(trigPin, LOW);
//pulseInt lê o tempo entre a chamada e o pino entrar em high
long duration = pulseIn(echoPin,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia = duration /29 / 2 ;
// -- NOTAS MIDI -- ULTRASSOM SENSOR 1 --
if (distancia >= 50){
delay(300); // Tempo de espera 300 milissegundos
}
else if (distancia <= 2){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(68));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(68));
Serial.write(byte(0));
}
else if ((distancia > 2) && (distancia <= 4)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(69));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(69));
Serial.write(byte(0));
}
else if ((distancia > 4) && (distancia <= 6)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(70));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(70));
Serial.write(byte(0));
}
else if ((distancia > 6) && (distancia <= 8)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(71));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(71));
Serial.write(byte(0));
}
else if ((distancia > 8) && (distancia <= 10)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(72));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(72));
Serial.write(byte(0));
}
else if ((distancia > 12) && (distancia < 14)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(73));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(73));
Serial.write(byte(0));
}
else if ((distancia > 14) && (distancia <= 16)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(74));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(74));
Serial.write(byte(0));
}
else if ((distancia > 16) && (distancia <= 18)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(75));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(75));
Serial.write(byte(0));
}
else if ((distancia > 18) && (distancia <= 20)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(76));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(76));
Serial.write(byte(0));
}
else if ((distancia > 20) && (distancia <= 22)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(77));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(77));
Serial.write(byte(0));
}
else if ((distancia > 22) && (distancia <= 24)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(78));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(78));
Serial.write(byte(0));
}
else if ((distancia > 24) && (distancia <= 26)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(79));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(79));
Serial.write(byte(0));
}
else if ((distancia > 26) && (distancia <= 28)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(80));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(80));
Serial.write(byte(0));
}
else if ((distancia > 28) && (distancia <= 30)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(81));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(81));
Serial.write(byte(0));
}
else if ((distancia > 30) && (distancia <= 32)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(82));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(82));
Serial.write(byte(0));
}
else if ((distancia > 32) && (distancia <= 34)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(83));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(83));
Serial.write(byte(0));
}
else if ((distancia > 34) && (distancia <= 36)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(84));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(84));
Serial.write(byte(0));
}
else if ((distancia > 36) && (distancia <= 38)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(85));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(85));
Serial.write(byte(0));
}
else if ((distancia > 38) && (distancia <= 40)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(86));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(86));
Serial.write(byte(0));
}
else if ((distancia > 40) && (distancia <= 42)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(87));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(87));
Serial.write(byte(0));
}
else if ((distancia > 42) && (distancia <= 44)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(88));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(88));
Serial.write(byte(0));
}
else if ((distancia > 44) && (distancia <= 46)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(89));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(89));
Serial.write(byte(0));
}
else if ((distancia > 46) && (distancia <= 48)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(90));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(90));
Serial.write(byte(0));
}
else if ((distancia > 48) && (distancia < 50)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(91));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(91));
Serial.write(byte(0));
}
// -- ULTRASSOM SENSOR 2 -- Medição --
//seta o pino 8 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin2, LOW);
//delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 8 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin2, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 8 com pulso baixo novamente
digitalWrite(trigPin2, LOW);
//pulseIn lê o tempo entre a chamada e o pino entrar em high
long duration2 = pulseIn(echoPin2,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia2 = duration2 /29 / 2 ;
// -- NOTAS MIDI -- ULTRASSOM SENSOR 2 --
if (distancia2 >= 50){
delay(300); // Tempo de espera 300 milissegundos
}
else if (distancia2 <= 2){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(68));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(68));
Serial.write(byte(0));
}
else if ((distancia2 > 2) && (distancia2 <= 4)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(67));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(67));
Serial.write(byte(0));
}
else if ((distancia2 > 4) && (distancia2 <= 6)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(66));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(66));
Serial.write(byte(0));
}
else if ((distancia2 > 6) && (distancia2 <= 8)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(65));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(65));
Serial.write(byte(0));
}
else if ((distancia2 > 8) && (distancia2 <= 10)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(64));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(64));
Serial.write(byte(0));
}
else if ((distancia2 > 12) && (distancia2 < 14)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(63));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(63));
Serial.write(byte(0));
}
else if ((distancia2 > 14) && (distancia2 <= 16)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(62));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(62));
Serial.write(byte(0));
}
else if ((distancia2 > 16) && (distancia2 <= 18)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(61));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(61));
Serial.write(byte(0));
}
else if ((distancia2 > 18) && (distancia2 <= 20)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(60));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(60));
Serial.write(byte(0));
}
else if ((distancia2 > 20) && (distancia2 <= 22)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(59));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(59));
Serial.write(byte(0));
}
else if ((distancia2 > 22) && (distancia2 <= 24)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(58));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(58));
Serial.write(byte(0));
}
else if ((distancia2 > 24) && (distancia2 <= 26)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(57));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(57));
Serial.write(byte(0));
}
else if ((distancia2 > 26) && (distancia2 <= 28)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(56));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(56));
Serial.write(byte(0));
}
else if ((distancia2 > 28) && (distancia2 <= 30)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(55));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(55));
Serial.write(byte(0));
}
else if ((distancia2 > 30) && (distancia2 <= 32)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(54));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(54));
Serial.write(byte(0));
}
else if ((distancia2 > 32) && (distancia2 <= 34)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(53));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(53));
Serial.write(byte(0));
}
else if ((distancia2 > 34) && (distancia2 <= 36)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(52));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(52));
Serial.write(byte(0));
}
else if ((distancia2 > 36) && (distancia2 <= 38)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(51));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(51));
Serial.write(byte(0));
}
else if ((distancia2 > 38) && (distancia2 <= 40)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(50));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(50));
Serial.write(byte(0));
}
else if ((distancia2 > 40) && (distancia2 <= 42)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(49));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(49));
Serial.write(byte(0));
}
else if ((distancia2 > 42) && (distancia2 <= 44)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(48));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(48));
Serial.write(byte(0));
}
else if ((distancia2 > 44) && (distancia2 <= 46)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(47));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(47));
Serial.write(byte(0));
}
else if ((distancia2 > 46) && (distancia2 <= 48)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(46));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(46));
Serial.write(byte(0));
}
else if ((distancia2 > 48) && (distancia2 < 50)){
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(45));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(45));
Serial.write(byte(0));
}
//delay(200); //espera 200 milissegundos para fazer a leitura novamente
}
"
-- Emitindo as notas MIDI com dois sensores ultrassom -- Código resumido --
Uma outra lógica mais curta do que utilizar várias funções "if" e "else if" pode ser feita se atrelarmos a variação de distância com a formação da nota. Abaixo segue um código mais curto seguindo a ideia. Cada sensor está relacionado com um canal de emissão de notas MIDI: um sensor com o canal 1 e o outro com o canal 2.
Código Arduíno mais curto que funcionou com dois sensores ultrassom (entre aspas - retirar as aspas se for utilizar):
"
#define echoPin2 9 //Pino 9 recebe o pulso do echo
#define trigPin2 8 //Pino 8 envia o pulso para gerar o echo
#define echoPin 13 //Pino 13 recebe o pulso do echo
#define trigPin 12 //Pino 12 envia o pulso para gerar o echo
const byte noteOffCommand = 0;
const byte noteOnCommand = 1;
byte channel = 0; // Channel 1 (0-15 selects channel 1-16)
byte channel2 = 1; // Channel 2 (0-15 selects channel 1-16)
//byte pitchByte = 69; // A4 = Middle A = 440 Hz (Piano keyboard runs from 21/A0 to 108/C8)
//byte velocityByte = 127; // Medium Velocity/Volume (value from 0 to 127)
void setup()
{
Serial.begin(115200); //inicia a porta serial 115200 para o HairLess
pinMode(echoPin, INPUT); // define o pino 13 como entrada (recebe)
pinMode(trigPin, OUTPUT); // define o pino 12 como saida (envia)
pinMode(echoPin2, INPUT); // define o pino 9 como entrada (recebe)
pinMode(trigPin2, OUTPUT); // define o pino 8 como saida (envia)
}
void loop()
{
// -- ULTRASSOM SENSOR 1 -- Medição --
//seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin, LOW);
// delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 12 com pulso baixo novamente
digitalWrite(trigPin, LOW);
//pulseInt lê o tempo entre a chamada e o pino entrar em high
long duration = pulseIn(echoPin,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia = duration /29 / 2 ;
// -- ULTRASSOM SENSOR 2 -- Medição --
//seta o pino 8 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin2, LOW);
//delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 8 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin2, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 8 com pulso baixo novamente
digitalWrite(trigPin2, LOW);
//pulseIn lê o tempo entre a chamada e o pino entrar em high
long duration2 = pulseIn(echoPin2,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
long distancia2 = duration2 /29 / 2 ;
// -- NOTAS MIDI -- ULTRASSOM SENSOR 1 --
if (distancia >= 50){
delay(300); // Tempo de espera 300 milissegundos
}
else {
int nota = distancia + 68;
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel)));
Serial.write(byte(nota)); //
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel)));
Serial.write(byte(nota));
Serial.write(byte(0));
}
// -- NOTAS MIDI -- ULTRASSOM SENSOR 2 --
if (distancia2 >= 50){
delay(300); // Tempo de espera 300 milissegundos
}
else {
int nota2 = 68 - distancia2;
Serial.write(0x80 + (noteOnCommand << 4) + (byte(channel2)));
Serial.write(byte(nota2));
Serial.write(byte(127));
delay(300); // Note duration
Serial.write(0x80 + (noteOffCommand << 4) + (byte(channel2)));
Serial.write(byte(nota2));
Serial.write(byte(0));
}
}
//delay(200); //espera 200 milissegundos para fazer a leitura novamente
"
Lucas T R Freitas
terça-feira, 3 de novembro de 2015
Logística e Cadeia de Suprimentos - 03/11/2015
Logística e Cadeia de Suprimentos - 03/11/2015
Correção da lista de exercícios
Respostas
1) Maior concorrência e economia de escala e preços reduzidos.
2) Ferroviário, aquaviário, rodoviário, aéreo e dutoviário.
3) Preço, tempo médio de viagem, variabilidade do tempo de trânsito, perdas e danos.
4) Carga fracionada, carga completa, capacidade menor do que a ferroviária.
5) Taxi aéreo, empresas internacionais, transportadores de carga geral de linha.
6) Trem-caminhão, trem-navio, caminhão-navio, trem-duto, caminhão-avião.
7) Zona livre de comércio internacional são áreas isentas de impostos e estabelecidas em um ou mais pontos de entrada de um determinado país, como portos marítimos ou aeroportos, pelos quais produtos estrangeiros podem entrar, ser conservados ou processados, e reembarcados isentos de impostos.
8) Aquisição e manutenção da concessão de tráfego (rotas), instalações de terminais, custos de mão-de-obra direta (motorista), manutenção, manuseio, coleta e entrega.
9) Tarifa por classe, tarifas contratadas, frete geral e outras tarifas incentivadas (vendas combo - ganho em quantidade com incremento mínimo em valor).
10)
- Falta de coordenação entre fases de um processo de transformação
- Incertezas com relação às taxas futuras de consumo e suprimento
- Especulação com a compra e venda de materiais
- disponibilidade no canal de distribuição
11)
- Estoque de matéria-prima (material em processo e produtos acabados)
- Estoque de produtos acabados
- Estoque de materiais para Manutenção Reparo e Operação
12)
- garantir a independência entre etapas produtivas
- colocação de estoques amortecedores entre etapas de produção ou distribuição da cadeia produtiva
- permitir uma produção constante: colocação de estoques de produtos acabados ou de matérias-primas para evitar que o ritmo de produção sofra alterações em função de variações sazonais na demanda.
13)
- equacionar os tamanhos de lotes
- definir a forma de reposição dos itens
- calcular os estoques de segurança do sistema
14)
- custo direto
- custo de preparação
- custo de manutenção do estoque
15) O lote econômico pode ser calculado em 3 situações:
- quando a entrega do lote é realizada numa única vez
- quando a entrega do lote é parcelada
- quando houver descontos no custo unitário do item por quantidade reposta
- dependerá do modelo de controle de estoques empregado
- controle por ponto de pedido
- reposições periódicas
16) Planejamento de Longo Prazo
É o planejamento que visa estabelecer toda estratégia e estrutura da empresa para o período que varia de dois a dez anos.
17) Planejamento de médio prazo
- Fornece a ligação entre os planos estratégicos e as atividades de médio prazo;
- Especifica a produção mensal ou trimestral para os principais produtos;
- Busca encontrar a combinação ideal entre os níveis de mão-de-obra e dos níveis de estoque necessário;
- Busca minimizar os custos de produção relativos ao planejamento de médio prazo.
18) Planejamento de curto prazo
- Envolve o planejamento de materiais, necessidades de capacidade, de controle de entradas e saídas e de atividade de produção (input e output).
19) Planejamento agregado é a atividade que procura compatibilizar os recursos produtivos da empresa com a demanda agregada do médio prazo.
20)
- Curto prazo: carga de trabalho, carga de máquinas, sequenciamento de trabalho, quantidades a fabricar e a comprar.
- Médio prazo: força de trabalho, estoques, produção, subcontratações (terceirização), pedidos pendentes - atrasados.
- Longo prazo: projeto do produto, localização, layout, capacidade, processo.
21)
- políticas empresariais
- restrições financeiras
- objetivos estratégicos
22)
- admissão / demissão
- horas extras
- subcontratações (terceirização)
23)
- usar estoques para absorver as flutuações da demanda (nivelar a produção)
- contratar e demitir pessoal para ajustar a produção à demanda
- manter recursos para os altos níveis de demanda
Lucas T R Freitas
Correção da lista de exercícios
Respostas
1) Maior concorrência e economia de escala e preços reduzidos.
2) Ferroviário, aquaviário, rodoviário, aéreo e dutoviário.
3) Preço, tempo médio de viagem, variabilidade do tempo de trânsito, perdas e danos.
4) Carga fracionada, carga completa, capacidade menor do que a ferroviária.
5) Taxi aéreo, empresas internacionais, transportadores de carga geral de linha.
6) Trem-caminhão, trem-navio, caminhão-navio, trem-duto, caminhão-avião.
7) Zona livre de comércio internacional são áreas isentas de impostos e estabelecidas em um ou mais pontos de entrada de um determinado país, como portos marítimos ou aeroportos, pelos quais produtos estrangeiros podem entrar, ser conservados ou processados, e reembarcados isentos de impostos.
8) Aquisição e manutenção da concessão de tráfego (rotas), instalações de terminais, custos de mão-de-obra direta (motorista), manutenção, manuseio, coleta e entrega.
9) Tarifa por classe, tarifas contratadas, frete geral e outras tarifas incentivadas (vendas combo - ganho em quantidade com incremento mínimo em valor).
10)
- Falta de coordenação entre fases de um processo de transformação
- Incertezas com relação às taxas futuras de consumo e suprimento
- Especulação com a compra e venda de materiais
- disponibilidade no canal de distribuição
11)
- Estoque de matéria-prima (material em processo e produtos acabados)
- Estoque de produtos acabados
- Estoque de materiais para Manutenção Reparo e Operação
12)
- garantir a independência entre etapas produtivas
- colocação de estoques amortecedores entre etapas de produção ou distribuição da cadeia produtiva
- permitir uma produção constante: colocação de estoques de produtos acabados ou de matérias-primas para evitar que o ritmo de produção sofra alterações em função de variações sazonais na demanda.
13)
- equacionar os tamanhos de lotes
- definir a forma de reposição dos itens
- calcular os estoques de segurança do sistema
14)
- custo direto
- custo de preparação
- custo de manutenção do estoque
15) O lote econômico pode ser calculado em 3 situações:
- quando a entrega do lote é realizada numa única vez
- quando a entrega do lote é parcelada
- quando houver descontos no custo unitário do item por quantidade reposta
- dependerá do modelo de controle de estoques empregado
- controle por ponto de pedido
- reposições periódicas
16) Planejamento de Longo Prazo
É o planejamento que visa estabelecer toda estratégia e estrutura da empresa para o período que varia de dois a dez anos.
17) Planejamento de médio prazo
- Fornece a ligação entre os planos estratégicos e as atividades de médio prazo;
- Especifica a produção mensal ou trimestral para os principais produtos;
- Busca encontrar a combinação ideal entre os níveis de mão-de-obra e dos níveis de estoque necessário;
- Busca minimizar os custos de produção relativos ao planejamento de médio prazo.
18) Planejamento de curto prazo
- Envolve o planejamento de materiais, necessidades de capacidade, de controle de entradas e saídas e de atividade de produção (input e output).
19) Planejamento agregado é a atividade que procura compatibilizar os recursos produtivos da empresa com a demanda agregada do médio prazo.
20)
- Curto prazo: carga de trabalho, carga de máquinas, sequenciamento de trabalho, quantidades a fabricar e a comprar.
- Médio prazo: força de trabalho, estoques, produção, subcontratações (terceirização), pedidos pendentes - atrasados.
- Longo prazo: projeto do produto, localização, layout, capacidade, processo.
21)
- políticas empresariais
- restrições financeiras
- objetivos estratégicos
22)
- admissão / demissão
- horas extras
- subcontratações (terceirização)
23)
- usar estoques para absorver as flutuações da demanda (nivelar a produção)
- contratar e demitir pessoal para ajustar a produção à demanda
- manter recursos para os altos níveis de demanda
Lucas T R Freitas
Oração a Nossa Senhora das Graças
Oração a Nossa Senhora das Graças
Santíssima Virgem, eu creio e confesso vossa santa e Imaculada Conceição, pura e sem mancha. Ó puríssima Virgem Maria, por vossa Conceição Imaculada e gloriosa prerrogativa de mãe de Deus, alcançai-me de vosso amado filho a humildade, a caridade, a obediência, a castidade, a santa pureza de coração, de corpo e espírito, a perseverança na prática do bem, uma santa vida e uma boa morte, e a graça que peço com toda confiança. Amém.
Nossa Senhora das Graças, Rogai por nós!
Lucas T R Freitas
segunda-feira, 2 de novembro de 2015
Assinar:
Postagens (Atom)