Ir ao conteúdo

jbiribi

Membro Pleno
  • Posts

    129
  • Cadastrado em

  • Última visita

Tudo que jbiribi postou

  1. Necessito fazer um mux 20x1, mas no programa que estou usando só existe 2x1, 4x1, 16x1 e 32x1. Este mux 20x1 que eu criei está certo?
  2. Tenho uma coleção de músicas no formato M4A (AAC). Estou tentando converter para MP3 para usar no carro, que não lê M4A. Utilizando o Format Factory dá erro na conversão e usando o XMedia Recode ou o FFmpeg ele até converte, mas dá erros nas músicas ou problemas na som. Notei que minhas músicas tem bit rate variável, será que é isso? Informações completas de uma delas abaixo: General Complete name : D:\Desktop\Jonas\Android\Backup\Music\Músicas\Another Brick in the Wall, Pt. 2.m4a Format : MPEG-4 Format profile : Base Media / Version 2 Codec ID : mp42 (mp42/isom) File size : 7.11 MiB Duration : 3 min 58 s Overall bit rate mode : Variable Overall bit rate : 250 kb/s Album : The Wall Track name : Another Brick in the Wall, Pt. 2 Performer : Pink Floyd Encoded date : UTC 2018-04-05 03:39:05 Tagged date : UTC 2018-04-05 03:43:04 Cover : Yes Audio ID : 1 Format : AAC Format/Info : Advanced Audio Codec Format profile : LC Codec ID : mp4a-40-2 Duration : 3 min 58 s Bit rate mode : Variable Bit rate : 247 kb/s Maximum bit rate : 352 kb/s Channel(s) : 2 channels Channel positions : Front: L R Sampling rate : 44.1 kHz Frame rate : 43.066 FPS (1024 SPF) Compression mode : Lossy Stream size : 7.04 MiB (99%) Language : English Encoded date : UTC 2018-04-05 03:39:05 Tagged date : UTC 2018-04-05 03:43:04
  3. O monitor já é o principal para o windows, com o asterisco e tal, mas não é o número 1 para minha placa de vídeo.
  4. Deve ser isso então. Da primeira vez que formatei com Windows 10 ativei pirata. Agora ele deve estar entendendo que é original.
  5. Baixei a ISO original do windows 10 do site da microsoft para formatar meu PC através do pendrive (https://www.microsoft.com/pt-br/software-download/windows10). Apaguei tudo do HD na formatação. Após finalizar a instalação notei que o windows já estava ativado, sendo que não tenho uma chave original e nem coloquei um crack ou algo do gênero. Alguém já viu isso acontecer??
  6. Neste local que você escreveu o monitor está como principal, mas na numeração ele continua sendo o 2, o que faz com que, no boot, a tv seja a tela principal.
  7. Eu possuo duas telas no meu pc: Um monitor e uma TV. O problema é que no sistema é reconhecido a TV (que está ligada por HDMI) como principal, e não o monitor, (que está ligado por VGA). Se o computador estiver atualizando ou se eu quiser entrar na bios, por exemplo, sou obrigado a ligar a tv ou retirar o HDMI. Como faço para que seja entendido que a tela principal é o monitor? Acredito que isso seja uma configuração da própria placa de vídeo, mas não sei como fazer isso.
  8. Como infelizmente o Adobe Premiere não aceitou nenhum dos formatos de áudio de maior qualidade (o filme tinha áudio DTS) tive que converter para AAC, diminuindo o bitrate em 60% do original. A pergunta é: se eu renderizar o filme com uma qualidade de áudio melhor, com um bitrate próximo ou maior que o original DTS, conseguirei uma qualidade de áudio igual ou parecida?
  9. Com Serial.parseInt() no arduino funciona perfeitamente, mas pelo programa em C nada acontece. #include <stdio.h> #include <windows.h> #include <conio.h> #include <stdlib.h> HANDLE hSerial; wchar_t port[6] = {L"COM3"}; int main() { hSerial = CreateFile("COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); DCB dcbSerialParams = {0}; dcbSerialParams.DCBlength = sizeof(dcbSerialParams); GetCommState(hSerial, &dcbSerialParams); dcbSerialParams.BaudRate = CBR_9600; dcbSerialParams.ByteSize = 8; dcbSerialParams.StopBits = ONESTOPBIT; dcbSerialParams.Parity = NOPARITY; SetCommState(hSerial, &dcbSerialParams); COMMTIMEOUTS timeouts = {0}; timeouts.ReadIntervalTimeout = 50; timeouts.ReadTotalTimeoutConstant = 50; timeouts.ReadTotalTimeoutMultiplier = 10; timeouts.WriteTotalTimeoutConstant = 50; timeouts.WriteTotalTimeoutMultiplier = 10; SetCommTimeouts(hSerial, &timeouts); int comando; int menu; while (menu != 27){ printf("\n\nQual temperatura você deseja?\n"); scanf("%i", &comando); printf("%i", comando); int TxBuff [1]; unsigned int TotalBytesaEnviar = 12; unsigned long BytesEnviados; TxBuff [0] = comando; WriteFile(hSerial, &TxBuff, TotalBytesaEnviar, &BytesEnviados, NULL); printf("\n\nTecle ESC para sair. Outra tecla para reiniciar"); menu = getch (); } CloseHandle (hSerial); return 0; }
  10. É que esse projeto tem que ser em C, senão usaria o C# sem problemas. Consegui entender agora sobre as casas decimais e trabalhar elas como número inteiro. A dúvida agora é: como fazer o arduino receber esse número sem que ele veja o ASCII separado de cada um deles?? Dei uma lida e vi que subtraindo 0 ele converte esse ASCII pra número real no arduino, mas continua vendo tudo separado. Em alguns lugares falava para colocar em uma string e depois converter pra um número.
  11. Estou engatinhando em C ainda, ou seja, não entendi muita coisa do C#. Mesmo assim obrigado pela ajuda hehe. Tentarei ir pro lado do ASCII como vocês falaram. Só tenho que aprender como converter, porque não sei se entendi bem o que você falou, sobre fixar casas e tal. É possível usar casas decimais no int?
  12. O problema agora é que o programa em C que estou fazendo para mandar estes valores não parece estar comunicando corretamente. #include <stdio.h> #include <windows.h> #include <conio.h> HANDLE hSerial; wchar_t port[6] = {L"COM3"}; int main() { hSerial = CreateFile("COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); DCB dcbSerialParams = {0}; dcbSerialParams.DCBlength = sizeof(dcbSerialParams); GetCommState(hSerial, &dcbSerialParams); dcbSerialParams.BaudRate = CBR_9600; dcbSerialParams.ByteSize = 8; dcbSerialParams.StopBits = ONESTOPBIT; dcbSerialParams.Parity = NOPARITY; SetCommState(hSerial, &dcbSerialParams); COMMTIMEOUTS timeouts = {0}; timeouts.ReadIntervalTimeout = 50; timeouts.ReadTotalTimeoutConstant = 50; timeouts.ReadTotalTimeoutMultiplier = 10; timeouts.WriteTotalTimeoutConstant = 50; timeouts.WriteTotalTimeoutMultiplier = 10; SetCommTimeouts(hSerial, &timeouts); float comando, temperatura; int menu; while (menu != 27){ printf("\n\nQual temperatura você deseja?\n"); scanf("%f", &comando); float TxBuff [1]; unsigned int TotalBytesaEnviar = 12; unsigned long BytesEnviados; TxBuff [0] = comando; WriteFile(hSerial, &TxBuff, TotalBytesaEnviar, &BytesEnviados, NULL); float RxBuff [1]; unsigned int TotalBytesaReceber = 1; unsigned long BytesRecebidos; ReadFile(hSerial, &RxBuff, TotalBytesaReceber, &BytesRecebidos, NULL); temperatura = RxBuff[0]; printf("\n\nTemperatura atual: %f\n", temperatura); printf("\n\nTecle ESC para sair. Outra tecla para reiniciar"); menu = getch (); } CloseHandle (hSerial); return 0; } Mesmo enviando valores não acontece nada. E a temperatura recebida está errada. Isso é algum problema com o Serial.parseFloat será?
  13. Utilizei o Serial.parseFloat como o Carlos Zanon falou e funcionou. Pelo que li o Serial.parseFloat lê um float ao invés do ASCII.
  14. Utilizei Serial.parseFloat e funcionou. Valeu pela resposta.
  15. Serial.available() é para verificar se a porta está disponível. A única parte que não foi eu que escrevi foi a parte do LM35 --> https://portal.vidadesilicio.com.br/lm35-medindo-temperatura-com-arduino/ Quanto ao tipo de dado da porta serial eu não achei nada na internet, mas pelo que lembre já vi ser comparado com float.
  16. Estou tentando fazer com que um LED ligue caso o valor que eu colocar na serial for maior que a temperatura que ele está medindo. O problema é que está ligando sempre. Caso eu tire o if(Serial.available() > 0) liga sempre também mas desliga depois de um tempo. Alguém poderia me ajudar? const int LM35 = A0; float temperatura; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); } void loop() { temperatura = (float(analogRead(LM35))*5/(1023))/0.01; Serial.print("Temperatura: "); Serial.println(temperatura); delay(2000); if(Serial.available() > 0){ if(temperatura <= Serial.read()){ digitalWrite(13, HIGH); } else if(temperatura > Serial.read()){ digitalWrite(13, LOW); } } }
  17. Estou tentando fazer com que um LED ligue caso o valor que eu colocar na serial for maior que a temperatura que ele está medindo. O problema é que está ligando sempre. Caso eu tire o if(Serial.available() > 0) liga sempre também mas desliga depois de um tempo. Alguém poderia me ajudar? const int LM35 = A0; float temperatura; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); } void loop() { temperatura = (float(analogRead(LM35))*5/(1023))/0.01; Serial.print("Temperatura: "); Serial.println(temperatura); delay(2000); if(Serial.available() > 0){ if(temperatura <= Serial.read()){ digitalWrite(13, HIGH); } else if(temperatura > Serial.read()){ digitalWrite(13, LOW); } } }
  18. Usando printf no lugar de putchar ficou igual. Meu código está assim agora: #include <stdio.h> #include <windows.h> #include <conio.h> HANDLE hSerial; wchar_t port[6] = {L"COM3"}; //A COM do meu arduino é a 3 int main() { hSerial = CreateFile("COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); DCB dcbSerialParams = {0}; dcbSerialParams.DCBlength = sizeof(dcbSerialParams); GetCommState(hSerial, &dcbSerialParams); dcbSerialParams.BaudRate = CBR_9600; dcbSerialParams.ByteSize = 8; dcbSerialParams.StopBits = ONESTOPBIT; dcbSerialParams.Parity = NOPARITY; SetCommState(hSerial, &dcbSerialParams); COMMTIMEOUTS timeouts = {0}; timeouts.ReadIntervalTimeout = 50; timeouts.ReadTotalTimeoutConstant = 50; timeouts.ReadTotalTimeoutMultiplier = 10; timeouts.WriteTotalTimeoutConstant = 50; timeouts.WriteTotalTimeoutMultiplier = 10; SetCommTimeouts(hSerial, &timeouts); char comando; printf("Digite um número entre 0 e 9. 10 para fechar: "); scanf("%c", &comando); //comando = getch(); char TxBuff [1]; unsigned int TotalBytesaEnviar = 12; unsigned long BytesEnviados; TxBuff [0] = comando; WriteFile(hSerial, &TxBuff, TotalBytesaEnviar, &BytesEnviados, NULL); char RxBuff [1]; unsigned int TotalBytesaReceber = 1; unsigned long BytesRecebidos; ReadFile(hSerial, &RxBuff, TotalBytesaReceber, &BytesRecebidos, NULL); putchar(RxBuff[0]); CloseHandle (hSerial); return 0; } Está funcionando, mas tenho que enviar duas vezes. Na primeira vez que envio um número ele repete o valor anterior. Não entendi porque, mas já está melhor que antes kkkk. E sobre não estar somando quando envio 9: Deve ser porque devo converter para ASC. Agora só tenho que pesquisar como fazer isso.
  19. Usar printf no código do arduino? porque no arduino não compilou com printf.
  20. No Arduino está funcionando bem de 0 a 8. Se coloco 9 ele retorna dois pontos ( : ) ao invés de 10. No programa em C está retornando valores muito errados, como pode ver nas imagens abaixo:
  21. Boa tarde! Tenho que fazer o seguinte programa: Elabore um programa que envie um número de 0 a 9 pelo canal de comunicação serial para um Arduino e que este some 1 ao valor e o envie de volta ao PC para ser impresso na tela. O professor passou algumas linhas de código em C para fazer esse envio e leitura, mas não consegui fazer funcionar. Até agora está assim: #include <stdio.h> #include <windows.h> #include <conio.h> HANDLE hSerial; wchar_t port[6] = {L"COM3"}; //A COM do meu arduino é a 3 int main() { hSerial = CreateFile("COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); DCB dcbSerialParams = {0}; dcbSerialParams.DCBlength = sizeof(dcbSerialParams); GetCommState(hSerial, &dcbSerialParams); dcbSerialParams.BaudRate = CBR_9600; dcbSerialParams.ByteSize = 8; dcbSerialParams.StopBits = ONESTOPBIT; dcbSerialParams.Parity = NOPARITY; SetCommState(hSerial, &dcbSerialParams); COMMTIMEOUTS timeouts = {0}; timeouts.ReadIntervalTimeout = 50; timeouts.ReadTotalTimeoutConstant = 50; timeouts.ReadTotalTimeoutMultiplier = 10; timeouts.WriteTotalTimeoutConstant = 50; timeouts.WriteTotalTimeoutMultiplier = 10; SetCommTimeouts(hSerial, &timeouts); int comando; printf("Digite um número entre 0 e 9. 10 para fechar: "); scanf("%i", &comando); int TxBuff [1]; unsigned int TotalBytesaEnviar = 12; unsigned long BytesEnviados; TxBuff [0] = comando; WriteFile(hSerial, &TxBuff, TotalBytesaEnviar, &BytesEnviados, NULL); int RxBuff [1]; unsigned int TotalBytesaReceber = 1; unsigned long BytesRecebidos; ReadFile(hSerial, &RxBuff, TotalBytesaReceber, &BytesRecebidos, NULL); putchar(RxBuff[0]); printf("\n%i\n", comando); CloseHandle (hSerial); return 0; } No arduino coloquei o seguinte código: void setup() { Serial.begin(9600); } void loop() { if(Serial.available() > 0){ int num = 0; num = Serial.read() + 1; Serial.println(num); Serial.write(num); } } Ele retorna o valor, mas diferente do arduino.
  22. Realmente, estava errado. Com o seu aprece funcionar até 8. Com 9 aparece : em vez de 10. O problema é que no programa em C não aparece o valor certo, então deve ter erro ali também. No exercício não pede mas, só por curiosidade, por algum motivo com o seu código a partir de 10 ele soma as duas unidades. Não entendi porque.
  23. Boa noite! Tenho que fazer o seguinte programa: Elabore um programa que envie um número de 0 a 9 pelo canal de comunicação serial para um Arduino e que este some 1 ao valor e o envie de volta ao PC para ser impresso na tela. O professor passou algumas linhas de código em C para fazer esse envio e leitura, mas não consegui fazer funcionar. Até agora está assim: #include <stdio.h> #include <windows.h> #include <conio.h> HANDLE hSerial; wchar_t port[6] = {L"COM3"}; //A COM do meu arduino é a 3 int main() { hSerial = CreateFile("COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); DCB dcbSerialParams = {0}; dcbSerialParams.DCBlength = sizeof(dcbSerialParams); GetCommState(hSerial, &dcbSerialParams); dcbSerialParams.BaudRate = CBR_9600; dcbSerialParams.ByteSize = 8; dcbSerialParams.StopBits = ONESTOPBIT; dcbSerialParams.Parity = NOPARITY; SetCommState(hSerial, &dcbSerialParams); COMMTIMEOUTS timeouts = {0}; timeouts.ReadIntervalTimeout = 50; timeouts.ReadTotalTimeoutConstant = 50; timeouts.ReadTotalTimeoutMultiplier = 10; timeouts.WriteTotalTimeoutConstant = 50; timeouts.WriteTotalTimeoutMultiplier = 10; SetCommTimeouts(hSerial, &timeouts); int comando; printf("Digite um número entre 0 e 9. 10 para fechar: "); scanf("%i", &comando); int TxBuff [1]; unsigned int TotalBytesaEnviar = 12; unsigned long BytesEnviados; TxBuff [0] = comando; WriteFile(hSerial, &TxBuff, TotalBytesaEnviar, &BytesEnviados, NULL); int RxBuff [1]; unsigned int TotalBytesaReceber = 1; unsigned long BytesRecebidos; ReadFile(hSerial, &RxBuff, TotalBytesaReceber, &BytesRecebidos, NULL); putchar(RxBuff[0]); printf("\n%i\n", comando); CloseHandle (hSerial); return 0; } No arduino coloquei o seguinte código: void setup() { Serial.begin(9600); } void loop() { int num = 0; num = Serial.read(); num = num + 1; Serial.println(num); } Ele retorna o valor, mas não foi modificado pelo arduino. Eu sei que devem ter muitas coisas erradas, mesmo que o programa esteja compilando.
  24. Deu certo! Fiz da seguinte forma: Obrigado a todos que me ajudaram!!
  25. Tenho que fazer um programa em C com o seguinte enunciado: "Elabore um programa que calcule a soma total de n valores solicitados ao usuário. O programa solicita os valores do usuário e calcula a soma total quando o mesmo digitar a tecla números solicitados ao usuário e os imprima na tecla <ESC>. " Como faço para encerrar o programa com uma tecla do teclado?? Procurei mas não achei nada (ou eu que não entendi o que estava lendo kkkk).

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...