Para descompactar arquivos por linha de comando no Linux:
Comando mais usado (em 1 passo):
tar zxvf <filename.tar.gz>
Ou (em 2 passos):
gunzip <filename.tar.gz>
tar xvf <filename.tar>
segunda-feira, 26 de dezembro de 2011
Verificando SO no PHP
A função abaixo serve para verificar o tipo de sistema operacional e retornará true ou false verificando se o sistema é o Windows. A função poderá ser complementada com um if para verificar se o SO é *nix (Linux) ou MAC.
function isMSWindowsServer()
{
//Captura 3 primeiras letras do tipo de sistema operacional
$osID = strtoupper(substr(PHP_OS, 0, 3));
//Verifica se o sistema é Windows
$isWindows = (strcmp('WIN',$osID) == 0) ? true: false;
return $isWindows;
}
function isMSWindowsServer()
{
//Captura 3 primeiras letras do tipo de sistema operacional
$osID = strtoupper(substr(PHP_OS, 0, 3));
//Verifica se o sistema é Windows
$isWindows = (strcmp('WIN',$osID) == 0) ? true: false;
return $isWindows;
}
segunda-feira, 12 de dezembro de 2011
Tratando Hora no Java
Existem várias formas de se tratar hora no Java. É possível fazer conversões para String e usar substring ou usar o metodo getHours() da classe Date.
//classe SimpleDateFormat
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
Date datanula = df.parse("00:00:00");
String firstbox = textbox.getValue().toString().substring(11, 16);
if(textbox.equals(datanula){
//exibe a mensagem de erro
throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
}
------------------
//classe Date
Date myDate = new Date();
myDate.setHours(00);
if(textbox.equals(myDate.getHours()){
//exibe a mensagem de erro
throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
}
Como o getHours() está em depreciação, a mais correta forma é usando a classe Calendar. Abaixo seguem linhas de código para emitir um aviso quando a hora e o minuto forem iguais a zero. Cria-se uma instancia de Calendar na variável cal que vai receber a variavel no formato Date do objeto.
// cria a instancia de Calendar na variavel cal
Calendar cal = Calendar.getInstance();
//captura do formulário o valor da hora no formato Date e joga no objeto
cal.setTime(this.objetoDt.getValue());
// validação para hora igual 00h00
if (cal.get(Calendar.HOUR) == 0) {
if (cal.get(Calendar.MINUTE) == 0) {
//exibe a mensagem de erro
throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
}
}
//classe SimpleDateFormat
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
Date datanula = df.parse("00:00:00");
String firstbox = textbox.getValue().toString().substring(11, 16);
if(textbox.equals(datanula){
//exibe a mensagem de erro
throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
}
------------------
//classe Date
Date myDate = new Date();
myDate.setHours(00);
if(textbox.equals(myDate.getHours()){
//exibe a mensagem de erro
throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
}
Como o getHours() está em depreciação, a mais correta forma é usando a classe Calendar. Abaixo seguem linhas de código para emitir um aviso quando a hora e o minuto forem iguais a zero. Cria-se uma instancia de Calendar na variável cal que vai receber a variavel no formato Date do objeto.
// cria a instancia de Calendar na variavel cal
Calendar cal = Calendar.getInstance();
//captura do formulário o valor da hora no formato Date e joga no objeto
cal.setTime(this.objetoDt.getValue());
// validação para hora igual 00h00
if (cal.get(Calendar.HOUR) == 0) {
if (cal.get(Calendar.MINUTE) == 0) {
//exibe a mensagem de erro
throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
}
}
domingo, 27 de novembro de 2011
DHT-22 Sensor de Umidade e Temperatura no Arduino
Hoje resolvi iniciar a implementação prática da minha estação Climaduino e Monitora Cerrado através do sensor DHT-22. Segue o esquema de pinagem e esquema de ligação do sensor.
1-Vcc
2-Dados
3-N/C
4-GND
Existem várias maneiras de se capturar os dados, inclusive usando a biblioteca do DHT-22.
http://arduino.cc/playground/Main/DHTLib
É importante fazer o download da biblioteca e colocar na pasta librarie do Arduino.
https://github.com/adafruit/DHT-sensor-library
Segunda opção:
https://github.com/ringerc/Arduino-DHT22
http://arduino.cc/playground/Interfacing/Java
http://www.ladyada.net/learn/sensors/dht.html
http://paulo.blog.br/blog/climaduino-projeto-monitoracerrado/
1-Vcc
2-Dados
3-N/C
4-GND
Existem várias maneiras de se capturar os dados, inclusive usando a biblioteca do DHT-22.
http://arduino.cc/playground/Main/DHTLib
- // Example testing sketch for various DHT humidity/temperature sensors
- // Written by ladyada, public domain
- #include "DHT.h"
- #define DHTPIN 2 // what pin we're connected to
- // Uncomment whatever type you're using!
- //#define DHTTYPE DHT11 // DHT 11
- #define DHTTYPE DHT22 // DHT 22 (AM2302)
- //#define DHTTYPE DHT21 // DHT 21 (AM2301)
- // Connect pin 1 (on the left) of the sensor to +5V
- // Connect pin 2 of the sensor to whatever your DHTPIN is
- // Connect pin 4 (on the right) of the sensor to GROUND
- // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
- DHT dht(DHTPIN, DHT22);
- void setup() {
- Serial.begin(9600);
- Serial.println("DHTxx test!");
- dht.begin();
- }
- void loop() {
- // Reading temperature or humidity takes about 250 milliseconds!
- // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
- float h = dht.readHumidity();
- float t = dht.readTemperature();
- // check if returns are valid, if they are NaN (not a number) then something went wrong!
- if (isnan(t) || isnan(h)) {
- Serial.println("Failed to read from DHT");
- } else {
- Serial.print("Humidity: ");
- Serial.print(h);
- Serial.print(" %\t");
- Serial.print("Temperature: ");
- Serial.print(t);
- Serial.println(" *C");
- }
- }
É importante fazer o download da biblioteca e colocar na pasta librarie do Arduino.
https://github.com/adafruit/DHT-sensor-library
Segunda opção:
https://github.com/ringerc/Arduino-DHT22
http://arduino.cc/playground/Interfacing/Java
http://www.ladyada.net/learn/sensors/dht.html
http://paulo.blog.br/blog/climaduino-projeto-monitoracerrado/
sábado, 26 de novembro de 2011
Impressora 3D com Arduino
A impressora 3D, assim como o Arduino é um objeto que vem revolucionar toda a dinâmica da contrução de objetos e do processo de industrialização. O que antes era feito apenas nas indústrias agora pode ser feito dentro de casa. A grande vantagem da impressora 3D é poder criar diversos tipos de objetos plásticos que podem inclusive serem modificados e compartilhados além de simplesmente serem projetados.
A impressora 3D promete revolucionar o mundo da robótica pois, com ela, é possível criar diversos tipos de engrenagens e dispositivos com formatos específicos. A maioria dos objetos em 3D podem ser desenhados em softwares com o SolidWorks. As bibliotecas de objetos deverão evoluir indo desde simples objetos como puxadores, maçanetas, cabides, porta velas, jogos tipo lego até grandes objetos que poderão ser feitos de modo a interconectar diversas peças pequenas. Atualmente, duas grandes empresas estão vendendo kits para montagem da impressora 3D com Arduino. A Repraps e a Marketbot com a sua Thing-o-matic. Na internet existem outros modelos que são vendidos mas não em formato de kit para serem montados em casa.
http://wiki.makerbot.com/thingomatic
http://reprap.org/wiki/Main_Page
Opiniões de outros especialistas:
http://www.latinoware.org/pt-br/node/162
sexta-feira, 25 de novembro de 2011
Bootloader no Arduino
O bootloader nada mais é que o programa de inicialização do Arduino. O microcontrolador ATMega328 possui uma memória interna que é utilizada para o carregamento do programa. Porém, o CI quando é novo vem sem programa nenhum, pois é o desenvolver/projetista que vai definir o que o microcontrolador deve fazer.
A questão é, como jogar o programa de inicialização (bootloader) dentro do CI? Existem várias formas de se fazer isso. No Arduino Uno/Duemilanove/Mega o responsável por essa tarefa é a própria IDE que, em conjunto com o CI FTDI, executa essa tarefa.
No formato Standalone, como não se tem o CI na placa, é preciso fazer a transmissão do programa utilizando uma das portas/interface de saída do computador. As 3 formas possíveis são: via USB, porta serial ou porta paralela. Para cada porta existe um método diferente que pode ser utilizado. Cada uma dessas formas utiliza um cabo específico e alguns componentes eletrônicos para a transferência do sinal.
Utilizando o Ubuntu (ou uma distribuição Linux) fica fácil o controle sobre as portas/interfaces.
Abaixo mais informações sobre o bootloader e como fazer a gravação do CI.
http://marceloboah.blogspot.com/2011/02/ftdi-novas-tecnologias.html
http://artesanato.devolts.org/?page_id=267
http://www.arduino.cc/en/Hacking/ParallelProgrammer
http://artesanato.devolts.org/?page_id=267
http://www.labdegaragem.com.br/wiki/index.php?title=Gravando_o_Bootloader
http://www.dl1dow.de/inhalt/arduino/bootloader/e_arduino_bootloader.htm
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1253127933
A questão é, como jogar o programa de inicialização (bootloader) dentro do CI? Existem várias formas de se fazer isso. No Arduino Uno/Duemilanove/Mega o responsável por essa tarefa é a própria IDE que, em conjunto com o CI FTDI, executa essa tarefa.
No formato Standalone, como não se tem o CI na placa, é preciso fazer a transmissão do programa utilizando uma das portas/interface de saída do computador. As 3 formas possíveis são: via USB, porta serial ou porta paralela. Para cada porta existe um método diferente que pode ser utilizado. Cada uma dessas formas utiliza um cabo específico e alguns componentes eletrônicos para a transferência do sinal.
Utilizando o Ubuntu (ou uma distribuição Linux) fica fácil o controle sobre as portas/interfaces.
Abaixo mais informações sobre o bootloader e como fazer a gravação do CI.
http://marceloboah.blogspot.com/2011/02/ftdi-novas-tecnologias.html
http://artesanato.devolts.org/?page_id=267
http://www.arduino.cc/en/Hacking/ParallelProgrammer
http://artesanato.devolts.org/?page_id=267
http://www.labdegaragem.com.br/wiki/index.php?title=Gravando_o_Bootloader
http://www.dl1dow.de/inhalt/arduino/bootloader/e_arduino_bootloader.htm
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1253127933
Arduino Standalone
O Arduino Standalone é o formato mais simplificado de montagem do Arduino. Consiste apenas no seu microcontrolador
ATMega328 ou ATMega8 com alimentação, cristal para a oscilação e no máximo um reset.
Esquema no protoboard:
Esquema no protoboard:
Informações mais completas em outros blogs do pessoal da comunidade do Arduino.
O detalhe desse formato é que para a inicialização do programa é preciso de um bootloader que será abordado no próximo tópico.
Assinar:
Postagens (Atom)



