Social Icons

Tornando-se Desenvolvedor Apple!

Você sonha em se tornar um desenvolvedor de aplicativos para iOS, mas não sabe por onde começar? Então veja aqui os primeiros passos básicos para começar a criar seus próprios programas e, quem sabe, ficar famoso com isso. E o melhor: qualquer um pode se tornar um grande desenvolvedor para o iPhone. :)
Introdução
Ninguém duvida que a App Store revolucionou a telefonia mundial, pois trouxe para o mundo dos celulares a dinâmica e variedade de instalação de aplicativos que sempre existiu nos computadores, aumentando exponencialmente as capacidades do aparelho. Já haviam maneiras de instalar aplicativos menos elaborados em smartphones antes, via download em sites ou envio por SMS, mas a facilidade de ter o que se quer com apenas um clique (ou toque) acabou sendo copiada por diversos fabricantes e até mesmo reutilizada pela própria Apple, na sua versão para Mac.
Se do lado do consumidor a loja foi um sucesso, do lado de quem faz aplicativos foi aberto um campo imenso, pois possibilitou que qualquer um (como eu e você) pudesse criar e vender aplicativos para o mundo inteiro, coisa que antigamente só era viável a grandes empresas multinacionais. A Apple não só disponibilizou toda a estrutura de servidores para armazenar e distribuir os apps (com uma loja centralizada), mas também criou um kit de desenvolvimento (SDK) que qualquer um pode baixar e criar aplicativos. Tudo o que você precisa é de equipamento compatível e muito, muito estudo.

1º Passo – Comprar um Mac
Muita gente esbarra nesse primeiro passo, pois para desenvolver para o iOS (sistema operativo do iPhone, iPad, iPod touch e AppleTV) é obrigatório possuir um computador com Mac OS X. Há quem faça a gambiarra de tentar instalar o sistema em PCs Intel (os chamados hackintoshes), mas o melhor mesmo é investir em um bom Mac, principalmente agora que eles baixaram de preço no Brasil. Além de ser a ferramenta perfeita, você verá que ele mudará sua experiência com computadores para o resto de sua vida. :)
O Mac mais barato hoje no nosso país é o Mac mini (link) e custa R$1.999. Se você é estudante ou trabalha na rede de ensino, pode usar a área educacional da Apple Store Online e pagar ainda menos: R$1.849 (link). Ele vem só com a CPU central, ideal se você já tiver monitor, teclado e mouse do seu PC anterior.
Mas se você estiver querendo investir em algo um pouco mais consistente, que o ajude também em outros aspectos de sua vida (e não só no desenvolvimento de apps), o melhor conselho é o de investir em um MacBook (Air ou Pro) ou até mesmo em um iMac, que na semana passada ganhou um descontão de R$1.000. Lembrando que na área educacional os preços são ainda menores. :)

2º Passo – Inscrever-se no programa gratuito da Apple
Enquanto você decide se compra um Mac ou uma bicicleta, você já pode começar a baixar o material necessário para iniciar o desenvolvimento, se inscrevendo gratuitamente como Apple Developer. Esse passo não custa nada e você tem acesso ao último SDK, exemplo de códigos, vídeos de introdução e um vasto material em PDF para aprender os primeiros passos de programação. É material suficiente para dias e dias de aprendizado, sem gastar nenhum tostão. Absolutamente tudo é em inglês, o que torna obrigatório o conhecimento básico da língua.
Além da versão gratuita, há o Apple Developers Program, que é pago (US$99 ou 74€ por ano) e permite alguns benefícios a mais, como instalar e rodar os códigos no seu aparelho (com a versão grátis você só pode testá-los no simulador do Mac), tem acesso à versões beta do iOS e também tem direito a publicar seu aplicativo na App Store. Mas isso você pode fazer depois que tiver uma boa base da teoria. ;)

3º Passo – Estudar, estudar, estudar
As ferramentas que a Apple proporciona são uma verdadeira mão na roda, facilitando muito o desenvolvimento de aplicativos. Mas não bastam para começar a criar programas para o iPhone. É preciso muito estudo da linguagem básica de programação, chamada Objective-C, que não é algo que se aprenda em duas semanas. Por isso, é preciso muito estudo e dedicação.
Além do material em PDF disponibilizado pela Apple, há também alguns volumes convertidos em formato iBook, que podem ser baixados direto na App Store para serem lidos no iPhone, iPad ou iPod touch.
Se você não se contentar com o material gratuito (que é extenso) e preferir livros comerciais dedicados a isso, com uma linguagem mais abordável, é possível comprar no Brasil obras importadas (veja a lista de algumas sugestões aqui). Infelizmente não há obras de destaque em português para aprender programação para iPhone.

4º Passo – Criar seu primeiro aplicativo
Nesse ponto, você já tem todas as condições de começar a desenvolver seu primeiro aplicativo. Mesmo que você ainda não tenha um registro pago da Apple, poderá criar e testar apps no simulador do iPhone (ou iPad) no Mac.
A primeira coisa é saber o que você quer fazer. É normal os primeiros resultados serem apps básicas e com função duvidosa, mas que são fundamentais para a evolução do aprendizado. Mas não faça como alguns devs, que se empolgam com o primeiro aplicativo e o publicam na App Store… Depois de ter experiência suficiente, tente pensar em algo útil que realmente vá servir para os usuários. De preferência, que ainda não exista na loja.
Depois que você já pegou a prática e até mesmo já desenvolveu um ou mais aplicativos funcionais, aí sim poderá partir para o passo final.

5º Passo – Inscrever-se como desenvolvedor da Apple
Você agora já tem tudo para começar ganhar fama (e quem sabe, dinheiro) com suas criações. É o momento de se inscrever oficialmente como um desenvolvedor de iOS e pagar a taxa necessária, que poderá ser recuperada facilmente se seu aplicativo fizer sucesso.
Há três tipos de contas: a Individual (só você tem acesso à conta) e a Company (você pode ter uma equipe que também terá acesso à conta), ambas custando US99; ou então a Enterprise (permite que se crie aplicativos internos para empresas, sem passar pela App Store) que custa US$299.
A conta paga também dá acesso aos fóruns técnicos de desenvolvedores, onde são debatidas questões e problemas relativos ao iOS. Em época de versões beta, há também uma área confidencial com várias novidades sobre as futuros sistemas.
—————————————–
Esses são os passos básicos para todos que quiserem começar a investir na programação para iPhones e iPads. As possibilidades são enormes e a cada ano o mercado cresce cada vez mais. Se você gosta disso, não deixe para amanhã o que você pode começar hoje. ;) 

Créditos BlogDoiPhone.com.br

Adicionando Favoritos

Um dos recursos presentes no sistema iOS (que roda no iPhone, iPad e iPod touch) que os novatos nem sempre sabem que existe é a possibilidade de adicionar um ícone de página internet diretamente na tela de aplicativos do aparelho, para acesso fácil. Se você é um destes que desconhece esta função, veja agora como realizá-la.
A função existe desde a versão 1.3 do iOS (jan/2008), quando a Apple ainda estava em dúvida se permitia ou não o desenvolvimento de aplicativos de terceiros no iPhone. A ideia inicial era apenas permitir webapps, aplicativos baseados na internet e não instalados diretamente no dispositivo. Felizmente ela mudou de ideia e a App Store revolucionou o mercado de celulares.
Com um ícone na tela inicial, fica muito mais fácil acessar páginas que usamos com frequência. Vamos exemplificar o processo usando uma página que eu particularmente acesso bastante: o Blog do iPhone.
1. Abra no Safari a página do site que você deseja favoritar.

2. Toque na seta localizada no menu inferior da tela. Escolha a opção “Adicionar à Tela Início“.

3. Escolha o nome que quer que o ícone se chame. Se tiver mais de 12 caracteres (incluindo espaços), o sistema cortará o nome. Em sites preparados, aparecerá automaticamente um ícone personalizado especial para iOS.

A partir daí, o ícone já aparece ao lado de outros aplicativos, com fácil acesso. Veja estes passos em vídeo:

Créditos BlogdoiPhone.com.br

Dicionário no iOS

Já aconteceu com você de escrever uma palavra da língua portuguesa e ele nem sempre corrigí-la como deveria? Por exemplo, você digita “nao” e ele nem sugere para você colocar o til. Por que isso acontece?
A resposta é que, na verdade, foi você mesmo quem ensinou que a palavra “nao” é sem acento.
Isso porque o sistema de autocorreção do iOS é capaz de aprender palavras se você as usar frequentemente. O problema disso é que, em torpedos SMS por exemplo, muitos de nós tem o hábito de não escrever acentos nas mensagens (pois não são todos os celulares que os suportam). Com isso, ao digitar várias vezes a palavra sem acento, o dicionário do iPhone (iPod ou iPad) acha que aquele é o modo correto de escrever e acaba incorporando-a à sua biblioteca. Como consequência, ele passa a não corrigí-la mais.
Uma das falhas no iOS, aliás, é a impossibilidade de personalizar o dicionário.
Felizmente existe uma maneira de redefinir todas as palavras, fazendo com que o dicionário volte ao que era quando você instalou pela primeira vez o sistema. Aprenda como fazer:
1. Vá em Ajustes > Geral e, no fim da tela, Redefinir.
2. Toque em Redefinir Dicionário do Teclado.
3. Um aviso lhe informa que todas as palavras personalizadas serão apagadas e voltarão aos padrões de fábrica. Como é isso mesmo que queremos, confirme em Redefinir.
A partir daí, as palavras que não estavam apresentando mais correção, voltam a funcionar. Claro que, se ele já tinha se acostumado com outras palavras particulares (gírias), estas também serão apagadas e ele terá que reaprendê-las. Para isso, basta usá-las várias vezes no uso diário.

Créditos - BlogdoiPhone.com

Jailbreak!

Muita gente ainda confunde quando se fala de jailbreak do iPhone. Alguns têm medo, outros preconceito. Mas o fato é que ele é uma maneira de melhorarmos ainda mais um celular que já é fantástico, livrando ele das limitações impostas de fábrica.
Jailbreak é liberar o seu iPhone de todas as limitações
Por que fazer o jailbreak? Ele é contra a lei? Ele pode estragar meu telefone? Eu perco a garantia?
É justamente sobre isso que discutiremos neste artigo.
Primeiro de tudo vamos à definição:

O que é jailbreak?

A palavra “jailbreak”, em uma tradução livre, poderia ser definido como “sair da prisão”. É o processo que libera o iPhone (e iPod touch) dos limites impostos pela Apple, permitindo que você instale programas não-oficiais e habilite funções bloqueadas no aparelho.
Ele é feito graças à programas desenvolvidos por comunidades de hackers, que têm como ideologia a liberdade que cada um tem de fazer o que quiser com uma propriedade sua.

iPhone Dev-Team

O Dev-Team é o grupo mais conhecido no momento, por ter sido o único a apresentar um método gratuito de jailbreak (e desbloqueio) para o firmware 2. Eles não aceitam doações e são contra a pirataria, procurando sempre desenvolver hackings que não transgridam a lei, tomando o cuidado de não alterar nenhum código que seja de propriedade intelectual da Apple. É por isso que eles desenvolvem a ferramenta para os firmwares customizados, mas não distribuem os arquivos prontos, pois isso seria ilegal. Você mudar um firmware para uso próprio pode, mas não tem o direito de distribuí-lo a ninguém.
É como você comprar uma música e alterá-la. Você pode, pois é sua, mas se distribuí-la, irá ferir os direitos autorais do autor. O raciocínio é o mesmo.

iPhone Classic

No começo, quando o iPhone era vendido somente nos Estados Unidos, o jailbreak era a única maneira de moradores de outros países usarem o celular, que vinha bloqueado com a AT&T. Milhares de pessoas no mundo fizeram isso, inclusive ministros europeus.
Ainda hoje, quem tem um iPhone Classic (aquele com a traseira prateada e preta) precisa obrigatoriamente fazer o jailbreak para poder usá-lo, pois ele continua preso com o chip da operadora original. Ele passou a ser vendido em alguns países da Europa, mas o único país que desbloqueava oficialmente os antigos modelos era a França (após 6 meses da compra), devido à sua legislação.

Cydia e Installer

No começo, o iPhone vinha com somente 16 aplicativos básicos (e o iPod touch com 12). E só.
Nada de aplicativos de terceiros, a única coisa que você podia fazer era acessar páginas internet no formato iPhone, que a Apple chamou de “Webapps”. Ela tentou incentivar os “aplicativos web” entre os desenvolvedores, mas isso foi um banho de água fria na maioria que pensava que poderia usar o máximo do sistema Unix instalado no aparelho.
Foi esse o grande incentivo inicial ao jailbreak, liberar aquele dispositivo cheio de capacidades, mas que vinha ultralimitado de fábrica. E com ele nasceu o Installer, que instalava direto no celular aplicativos feito por terceiros. Era o início da revolução.

GeoHot

Impossível falar do jailbreak sem citar o nome de George Hotz, o hacker de 17 anos que foi o primeiro no mundo a desbloquear o iPhone, pouco mais de um mês após seu lançamento. Mas na época o processo era físico: você tinha que abrir seu aparelho e tentar soldar um ponto minúsculo. Se errasse
O GeoHot também ajudou a encontrar várias outras falhas, que permitiram os desbloqueios futuros (inclusive o yellowsn0w).

Para que fazer o jailbreak?

Liberar seu aparelho é mais uma opção do que uma necessidade. Nos dias de hoje você pode muito bem viver sem o jailbreak e se conseguir, ótimo, pois estará evitando muita dor de cabeça com atualizações de firmwares e reinstalação de aplicativos cada vez que restaura. Mas deve saber também que não poderá fazer muita coisa além dos limites impostos pela Apple.
O jailbreak pode habilitar várias funções no aparelho, como MMS, gravação de filmes, multitasking (mais de um aplicativo rodando ao mesmo tempo), copiar/colar, usar o celular como modem internet, instalação de temas e fundos de telas, entre outros. Até o uso ilimitado do bluetooth é uma promessa iminente. Várias coisas que outros celulares permitem e o iPhone não.
É crime querer usar toda a capacidade de um aparelho que comprou?

O jailbreak anula a garantia?

Sim, anula, mas é totalmente reversível, porque ele não altera nada definitivamente no seu aparelho. Basta fazer a restauração normal pelo iTunes e você terá seu sistema original de fábrica. Só não pode levar para a assistência com o jailbreak, porque a Apple não permite.

Por que a Apple não permite o jailbreak?

Por uma questão lógica. A Apple proíbe qualquer alteração no sistema do iPhone porque instalar coisas que a empresa desconhece pode fazer um belo estrago no aparelho. Ela não pode achar que todos os hackers agem de boa fé e por isso não se responsabiliza pelas alterações feitas. É como quando você compra um computador: o manual diz que, se você abrí-lo, perde a garantia, porque a fabricante não sabe o que foi feito nele sem a permissão oficial. A mesma coisa com o iPhone, se você abrí-lo ou mexer no sistema operacional, ela não se responsabiliza mais. Nada mais lógico.

Preocupado com isso, o Dev-Team desenvolveu um processo confiável que não altera nada definitivamente no iPhone. Se o aparelho estragar, não será culpa do jailbreak e é por isso que basta restaurar o firmware para que a garantia valha outra vez.

Já ouvi dizerem que isso é querer enganar a assistência técnica oficial, mas a realidade é bem outra: se ele não estragou por causa do jailbreak, não é justo a garantia perder a validade.

É como você desinstalar um aplicativo antes de levar para a assistência.
Claro que estamos falando de jailbreak confiável. Se você um dia liberar seu aparelho em um site estranho com um método diferente do Dev-Team, ele pode usar métodos que estraguem seu aparelho e aí a garantia, com razão, fica inválida. Mas basta estar ligado aqui no Blog que informaremos sempre o método mais seguro.

Jailbreak não é sinônimo de pirataria

Muitos associam o desbloqueio ao uso de aplicativos crackeados, mas nem sempre isso é verdade.
Um dos motivos da Apple querer impedir o jailbreak é justamente o fato dele possibilitar usos pouco ortodoxos do aparelho, como a possibilidade de instalar aplicativos piratas. Isso sim é ilegal, pois é um roubo de propriedade intelectual. A comunidade de hackers responsável pelo desbloqueio do iPhone é contra este tipo de prática, por ser uma falta de respeito ao trabalho de pequenos e médios desenvolvedores, além de ser contra a lei.

Achar que todo o jailbreak é ilegal só por causa da pirataria é um erro.


O desbloqueio do aparelho

Este parece ser um ponto polêmico entre nossos leitores.
O desbloqueio é outra função que o jailbreak permite, possibilitando o uso do chip de uma operadora diferente daquela que vendeu o aparelho. Este é um recurso desnecessário no Brasil, visto que as operadoras nacionais desbloqueiam oficialmente o iPhone (comprado com elas), bastando um simples pedido do cliente. 
Mas em muitos países o aparelho vem bloqueado, dependendo do acordo que a Apple fez em cada país. Nesses casos, o cliente fica com o celular preso, não podendo usá-lo em viagens, por exemplo. Muitos brasileiros que moram no exterior sofrem com isso.

Também tem o caso dos proprietários do primeiro modelo de iPhone, que necessitam do desbloqueio para poder usar o aparelho no Brasil. A própria Apple já não se preocupa mais com isso, pois não está mais atualizando a baseband dos Classics.

Robô Extremamente Simples com Arduino!



Este robô desenvolvido com Arduino e dois servos é uma excelente projeto para os amantes da robótica.
O grande diferencial é que toda a documentação está livre, basta seguir os passos de montagem.

O que é?
Um robô de fácil construção e montagem, que você pode fazer com materiais de baixo custo.

Como surgiu?
Do interesse de professores do IF-SC, Campus Florianópolis, em desenvolver uma plataforma robótica facilmente replicável, como meio de incentivo às ciências exatas e tecnológicas.

O desenvolvimento deste robô foi apoiado pelo Primeiro Edital de Apoio a Projetos de Extensão no IF-SC (I APROEX). A equipe executora é formada pelos professores Joel Lacerda (Coordenador), Fernando S. Pacheco e Charles B. de Lima, do Departamento Acadêmico de Eletrônica (DAELN) do Campus Florianópolis e pelo aluno Luciano Silva do Lago, do Curso Técnico em Eletrônica.

Características
Nessa versão 1.0, a plataforma microcontrolada escolhida, por sua facilidade de aquisição, programação e baixo custo é o Arduino (usa microcontrolador ATmega328, família AVR). O chassis é de material plástico (polietileno) e as conexões elétricas são feitas em uma barra Sindal. Também para manter o baixo custo, usamos pilhas de fácil aquisição (tamanhos AA e 9 V).

Materiais

clique para ampliar
  • [A] Uma placa Arduino Duemilanove ou Arduino Uno
  • [B] Dois servomotores (hobby servo) 9 g
  • [C] Uma chapa de polietileno de alta densidade (PEAD ou HDPE, do nome em inglês). Aqui, usamos uma tábua de cortar carne :-)
  • [D] Duas rodas. Aqui, são os rolos que puxam papel de uma impressora usada (rodas com diâmetro de 5 cm)
  • [E] Pequeno pedaço de chapa de alumínio
  • [F] Fios para conexões (AWG 26 a 30)
  • [G] Dois elásticos de dinheiro
  • [H]  Cabo e conector de alimentação para bateria 9 V
  • [I] 1 bateria 9 V (quadrada)
  • [J]  Um porta 4 pilhas tamanho AA
  • [K] 4 pilhas AA
  • [L] Uma barra de conectores Sindal (12 bornes, 4 mm)
  • [M] Duas chaves (microswitch com haste)
  • [N] Dois LDRs
  • Não mostrados na figura
  • Dois espaçadores com rosca (de placa-mãe de computadores)
  • Um palito
  • Uma chave liga-desliga
Ferramentas

clique para ampliar
  • [A] Arco de serra comum ou mini
  • [B] Formão
  • [C] Furadeira
  • [D] Martelo
  • [E] Lápis
  • [F] Chave de fenda
  • [G] Brocas 1 mm (não mostrada na figura), 2,5 mm e broca de madeira 5/8" (aprox. 15 mm)
  • [H] Tesoura
  • [I] Lixa
  • [J] Régua
1. Faça o chassis
a. Imprima o modelo que está disponível acima (observe se escala está em 100%; confira com a marcação de 13,6 cm que existe no modelo). Recorte e marque sobre a placa de polietileno.



b. Usando o arco de serra, recorte a placa (na foto, estou fazendo um teste). Você deve levar aproximadamente 30 min nessa tarefa.


c. Faça os furos previstos com a broca menor.
d. Faça o recorte para as rodas com a broca maior (em uma furadeira de bancada, como mostrado na figura, fica mais fácil).


e. Com o formão, faça o acabamento dos recortes. Cuidado! Nunca direcione a lâmina para o seu corpo!
f. Lixe as bordas para um melhor acabamento.

2. Modifique os servomotores
a. Originalmente, um servo desse tipo tem o movimento limitado em 180 graus. Para transformá-lo em um servo de rotação contínua, siga as instruções (excelentes, com várias fotos) do blog de Tod E. Kurt, em http://todbot.com/blog/2009/04/11/tiny-servos-as-continuous-rotation-gearmotors/
Se tiver qualquer dúvida ou dificuldade, entre em contato com a gente.
b. Faça as ligações mostradas na figura seguinte para testar o funcionamento dos servos no próximo passo.
c. Carregue o programa seguinte na IDE do Arduino para testar os servos e ajustar a largura de pulso para que eles fiquem parados quando desejado.

/*****************************************************************************
 * ajuste_rotacao_direcao_servos
 *
 * Ajuste dos valores de pulso máximo (max.pulse) e mínimo (min.pulse) para
 * que o servo mantenha-se parado quando for enviado o comando de 90 graus
 *
 * Fernando S. Pacheco - 2011
 *****************************************************************************/

#include "SoftwareServo.h"

SoftwareServo servo;

void setup()
{
  servo.attach(2); //Num. do pino (Arduino) em que o servo está conectado.
  // Teste um servo, anote o valor do max. pulse, e depois teste o outro.

  //servoL.setMaximumPulse(XXX);// esse é o valor que será testado no loop.
  //   Depois de obtê-lo, coloque aqui em cima e tire o comentário.
  //servoL.setMinimumPulse(XXX);// para um dos servos que testamos, 
  //   não resolveu mexer só no max. pulse.
  //   Ficou muito baixo e, assim, a velocidade máxima era pequena.
  //   Foi necessário, então, ajustar também o min. pulse

  Serial.begin(9600);
  Serial.println("ServoAdjust/Ajuste do servo");
}

void loop()
{
  for (int maxpulse=500; maxpulse!=3000; maxpulse+=10)  { 
    servoL.setMaximumPulse(maxpulse);
    servoL.write(90);
    Serial.println(maxpulse);
    SoftwareServo::refresh();
    delay(45);
    SoftwareServo::refresh();
    delay(45);
  }
  //Depois de ter um valor aproximado, diminua o incremento do laço e 
  //os valores inicial e final
  delay(500);
}

3. Conecte as rodas aos motores
a. Coloque o suporte do servo em cima da roda e marque o material que será retirado
b. Com a furadeira e/ou formão, retire parte do plástico até que o suporte fique encaixado e centralizado
c. Fure as rodas e fixe o suporte (aqui, para teste, não usei parafusos)

4. Fixe a placa Arduino e as chaves
a. Rosqueie os espaçadores no chassis
b. Coloque a placa do Arduino
c. Cole ou parafuse as chaves na frente do robô. Use a chapa de alumínio para fazer uma haste maior para as chaves

5. Faça as conexões elétricas
a. Siga o esquemático e faça as conexões elétricas na barra Sindal

6. Fixe as pilhas
a. Use os elásticos e o palito para fixar as pilhas
b. Coloque um pequeno pedaço de polietileno embaixo da bateria 9 V

7. Programe o microcontrolador
a. Use o programa exemplo abaixo.
 
/*****************************************************************************
 * robot_segue_luz_e_volta_quando_bate
 *
 * Robô vai para a direção com mais luminosidade, a partir da leitura de 
 *  dois LDRs (fotorresistores)
 * Também tem duas chaves na frente para detectar quando bate
 *
 * Código usa os resistores internos de pullup do ATmega
 *
 * Fernando S. Pacheco - 2011
 *****************************************************************************/
#include "SoftwareServo.h"
#define invON LOW
#define invOFF HIGH
#define leftColisionPin  11
#define rightColisionPin 10
#define leftLdrPin A0
#define rightLdrPin A1

SoftwareServo servoL;
SoftwareServo servoR;

int leftCol=invOFF;
int rightCol=invOFF;
int leftLight=0;
int rightLight=0;

void setup()
{
  Serial.begin(9600);
  servoL.attach(2);
  servoR.attach(3);
  servoL.setMinimumPulse(295); //coloque os valores que você obteve no 
  //  teste dos servos. (Insert here the values obtained during servo testing)
  servoL.setMaximumPulse(993);
  servoR.setMaximumPulse(1247);
  pinMode(leftColisionPin, INPUT);
  digitalWrite(leftColisionPin, HIGH); //habilitar os resistores internos de
  //  pullup. (To enable internal pullup resistor)
  pinMode(rightColisionPin, INPUT);
  digitalWrite(rightColisionPin, HIGH); //to enable internal pullup resistor
  pinMode(rightLdrPin, INPUT);
  digitalWrite(rightLdrPin, HIGH); //to enable internal pullup resistor
  pinMode(leftLdrPin, INPUT);
  digitalWrite(leftLdrPin, HIGH); //to enable internal pullup resistor
  //Wait 2 seconds to begin
  delay(2000);
  //Aumenta velocidade vagarosamente / Increment speed slowly
  for (int k=0; k!=90; ++k) {    
    servoL.write(90+k);   //forward/frente em 180 
    servoR.write(90-k); //forward/frente em 0
    SoftwareServo::refresh();
    delay(25);
  }
  }

void loop()
{
  //Segue para frente em velocidade máxima / Go forward at full speed
  servoL.write(180);
  servoR.write(0);
  SoftwareServo::refresh();

  //Lê LDRs / Read LDRs
  leftLight=analogRead(leftLdrPin);
  rightLight=analogRead(rightLdrPin);
  
  if (leftLight > rightLight)  {
    servoL.write(150); 
    servoR.write(70);
  }
  else  {
    servoL.write(110);
    servoR.write(30);
  }
  SoftwareServo::refresh();
  delay(45);  

  //Lê chaves de colisão / Read collision detection switches
  leftCol=digitalRead(leftColisionPin);
  rightCol=digitalRead(rightColisionPin);
  
  //Detecção de colisão / Collision detected
  if (leftCol == invON || rightCol == invON) {
    //Robô para trás / Reverse
    servoL.write(30);   //frente em 180 
    servoR.write(150); //frente em 0

    for (int k=0; k!=10; ++k) {    
      SoftwareServo::refresh();
      delay(45);
    }
    if (leftCol == invON)  {
      //Se bateu à esquerda, vira para a direita / Turn right to avoid collision
      for (int k=0; k!=17; ++k) {
        servoL.write(140);
        servoR.write(140);
        SoftwareServo::refresh();
        delay(45);
      }
    }
    else {
      if (rightCol == invON)  {
        //Se bateu à direta, vira para a esquerda / Turn left to avoid collision
        for (int k=0; k!=17; ++k) {
          servoL.write(40);
          servoR.write(40);
          SoftwareServo::refresh();
          delay(45);
        }
      }
    }
  }  
  SoftwareServo::refresh();
  delay(1);
}

Você pode fazer o download dos programas do robô aqui.
 
8. Teste
a. Divirta-se! Modifique! Comente o resultado!

9. Ideias para outras versões
a. Com sensores infravermelho, fazer um seguidor de linha
b. Incluir sensores para que o robô identifique limites de espaço (por exemplo, não cair de uma mesa)
c. Fazer acionamento remoto
d. Usar um pack de baterias LiPo (6 células; 7,2 V, por exemplo)















Material Preço (R$) Observação
Uma placa Arduino Duemilanove ou Arduino Uno 74,00  se quiser fazer uma comprar internacional, no Ebay você encontra mais barato
Dois servomotores (hobby servo) 9 g 26,00 2 unidades no Brasil pode encontrar também em lojas de modelismo
Uma chapa de polietileno de alta densidade (PEAD ou HDPE, do nome em inglês) 4,00 Com uma tábua de cortar carne com aprox. 19x30 cm, é possível construir dois chassis
Duas rodas0,00 Aproveitamento de sucata (impressora); caso não consiga, pode fazer de madeira, MDF ou com o polietileno
Pequeno pedaço de chapa de alumínio 0,00 Também pode ser obtido de sucata
Fios para conexões (AWG 26 a 30) 5,00 A melhor opção é comprar já com as pontas feitas
Dois elásticos de dinheiro 0,00 Para fixar as pilhas
Cabo e conector de alimentação para bateria 9 V1,00 Peça quando comprar o Arduino
Uma bateria 9 V (quadrada) 7,00 Você também tem a opção de comprar uma recarregável
Um porta 4 pilhas tamanho AA 1,00 Facilmente encontrado em lojas de produtos eletrônicos
4 pilhas tamanho AA 5,00 Recarregáveis são uma ótima alternativa
Uma barra de conectores Sindal (12 bornes, 4 mm) 3,00 Em lojas de produtos eletrônicos ou elétricos
Duas chaves (microswitch com haste) 3,00 Opcionais, mas importantes para indicar quando o robô bate em um objeto
Dois LDRs 1,50 Opcionais; para fazer o robô seguir ou se afastar da luz
Dois espaçadores com rosca 0,00 De placa-mãe de computadores
Um palito 0,00
Uma chave liga-desliga 1,00
TOTAL 131,50

Alarme de Intruso com Arduino

Nada como um alarme para alertar a presença de um intruso.
Apresento o projeto de Alarme que desenvolvi.
Este dispositivo gera um sinal sonoro e luminoso e um botão desarma o alarme.
O código desenvolvido para o projeto é fexível e  permite a interação com  outros tipos de sensores de presença com nenhuma ou minimas modificações. 

Para esse projeto não será exigido um conhecimento em eletrônica elevado, mas será preciso conhecer alguns conceitos mais avançados de programação para compreender com facilidade o que o código está fazendo.

Para esse projeto vamos precisar de:

1x Sensor de presença PIR
2x LEDs, um Verde e outro Vermelho. Ou um LED bicolor.
1x Buzzer
1x Resistor de 1k (é possivel usar valores direfentes)
1x Resistor 220R (é possível usar também valores de 100R a 10k)
1x Arduino (qualquer modelo)
1x Matriz de contatos e fios.


Prepare todo o material e monte na sua matriz de contatos como ilustrado abaixo:


Clicar na imagem para ampliar

Confira todas as conexões.
Note que os LEDs não são ligados ao GND do arduino.
Lembre-se que essa forma de controlar LEDs com arduino já foi elucidada em turoriais antigos .Bem como o botão e o buzzer.

1-Agora plugue o seu arduino no cabo USB e faça a gravação do código abaixo:


//Alarme Contra Intruso.

Descição:
Sensor detecta intruso e ativa sinal sonoro e luminoso. 
O alarme é desarmado pressionando um botão.
Luz Verde: Alarme está aguardando.
Luz Vermelha: Alarme detectou algo.
*/

int ledVermelho = 8;                 //Pino para o LED vermelho(RED)
int ledVerde = 7;                    //Pino para o LED verde(Green)            
int piezoPin = 6;                   // Pino para o + do PIEZO

int PIRPin = 4;                      //Pino OUT do PIR(leitura de valores)
int botaoPin = 5;                   //Pino de leitura da entrada do Botão

int PIR = 0;                     //Variável que representa o valor fornecido pelo sensor PIR
int Bot = 0;                        //Variável que representa o valor fornecido pelo Botão



void setup() {               //Declara LEDs e PIEZO como pinos de Saída. PIR e Botão como Entrada
  pinMode(piezoPin, OUTPUT);
  pinMode(ledVermelho, OUTPUT); 
  pinMode(ledVerde, OUTPUT);                                
  pinMode(PIRPin, INPUT);    
  pinMode(botaoPin, INPUT);
  }



void somAlerta() {                          //Função de nome: "somAlerta" que gera sinal sonoro
  digitalWrite(piezoPin, HIGH);
  delayMicroseconds(600);
  digitalWrite(piezoPin, LOW);
  delayMicroseconds(600);
}

void piscaLED(){                                   //Função de nome: "piscaLED" que gera sinal sonoro
 
  digitalWrite(ledVerde, LOW);                    // Pino do ledVerde será o Terra
  digitalWrite(ledVermelho, HIGH);             // Led Vermelho ON
  delay(100);
 
  digitalWrite(ledVermelho,LOW);                 // Led Vermelho OFF          
  delay(100);
}



void loop(){
 
  PIR = digitalRead(PIRPin);     // Faz leitura do OUT do senso PIR e joga o valor lido na variável: "PIR"
 

 
if (PIR == HIGH) {             // Testa se a variável "PIR" é alta(5v), caso SIM: executa uma tarefa Caso NÃO pular para else{

  do{                                     //Faça essa tarefa e testar em while
    digitalWrite(ledVermelho, HIGH);     // Liga led Vermelho
    digitalWrite(ledVerde, LOW);         // Pino do led Verde torna-se o GND(terra) do led Vermelho
     somAlerta();                        //chama função que emite um som de alerta
 
    Bot = digitalRead(botaoPin);      //Faz leiturado do Botão e joga o valor na variálvel "Bot"  
   
    }while(Bot==0);  //Enquanto a variável Bot for zero(Botão não pressionado) continuar  executando           

}     
else{                                // PIR não está HIGH então executa as tarefas que estão no else{
           if(Bot==1){                        // caso o botão for pressionado após o alarme disparar fazer uma tarefa
               for(int i=0; i<5 ;i++){            // Temporiza(alguns segundo) a função que será chamada "piscaLED()"
                 piscaLED();                   //chama função que pisca o LED vermelho
                 }
                
                 digitalWrite(ledVermelho, LOW);    
                 digitalWrite(ledVerde, HIGH);     // Liga Led verde para
                 delay(10000);                      // Aguarda 10s (impede um novo alarme de imediato)
                
               Bot=0;         //Após o temporizador chamar e executar a função pescaLED declara que a variável "BOT" é zero
           }
     
     
          digitalWrite(ledVermelho, LOW);     // Mantem o pino Vermelho como GND(terra) para o lede VERDE
          digitalWrite(ledVerde, HIGH);       // Led Verde ON
       
     
    }
   
   
}



Entendendo o código:

Temos dois blocos básicos: if e um else, que testam o estado do sensor PIR. Caso for ativado(HIGH) uma tarefa é executada indeterminadamente. Nesta execução uma função é chamada: somAlerta();   que ativa o sinal sonoro. E também o LED vermelho é ativado.
Caso o sensor PIR não detectar(LOW) nenhum intruso o else é executado. Tornando o Led Verde e aguardando a presença de um intruso.
Entretanto é feito um teste para saber se o alarme foi desativado a poucos instantes. Se isso for verdade uma função: piscaLED(); é chamada dentro de um temporizador para piscar o LED Vermelho por alguns segundos. Este comportamento informa que o alarme está sendo desativado pelo botão.
Passado esse tempo o LED fica Verde indicando que o sensor está monitorando a área.
Há também um "timer" que estabelece um tempo minimo de 10s para disparo do alarme após este ser desativado pelo botão.
É importante notar que o botão funciona corretamente quando pressionado.
O botão só é habilitado para desarmar o alarme após alguns segundos obrigando um aviso de alerta.
O sensor pode detectar uma pessoa até 7m de distância.


Vejam o vídeo do seu funcionamento:




Ferramentas e Suas Funções



Tradução das ferramentas

Observe a figura de cada ferramenta na imagem acima.

Rectangular marquee Tool - Ferrameta Letreiro Retangular (M)
Elliptical marquee Tool - Ferramenta Letreiro Elíptica (M)
Single-row marquee Tool - Ferramenta Letreiro de Linha Única (M)
Single-column marquee Tool - Ferramenta Letreiro de Coluna Única (M)
Move Tool - Ferramenta Mover (V)
Lasso Tool - Ferramenta Laço (L)
Polygonal lasso Tool - Ferramenta Laço Poligonal (L)
Magnetic lasso Tool - Ferramenta Laço Magnético (L)
Magic Wand Tool - Ferramenta Varinha Mágica (W)
Crop Tool - Ferramenta Corte Demarcado (C)
Slice Tool - Ferramenta Fatia (K)
Slice select Tool - Ferramenta Seleção de Fatia (K)
Patch Tool - Ferramenta Correção (J)
Brush Tool - Ferramenta Pincel (B)
Pencil Tool - Ferramenta Lápis (B)
Clone stamp Tool - Ferramenta Carimbo (S)
Pattern stamTool - Ferramenta Carimbo de Padrão (S)
History brush Tool - Ferramenta Pincel do Histórico (Y)
Art history brush Tool - Ferramenta Pincel História da Arte (Y)
Eraser Tool- Ferramenta Borracha (E)
Background eraser Tool- Ferramenta Borracha de Plano de Fundo (E)
Magic eraser Tool - Ferramenta Borracha Mágica (E)
Gradient Tool - Ferramenta Degradê (G)
Paint bucket Tool - Ferramenta Lata de Tinta (G)
Blur Tool - Ferramenta Desfoque (R)
Sharpen Tool - Ferramenta Nitidez (R)
Smudge Tool - Ferramenta Borrar (R)
Dodge Tool - Ferramenta Subexposição (O)
Burn Tool - Ferramenta Superexposição (O)
Sponge Tool - Ferramenta Esponja (O)
Path selection Tool - Ferramenta Seleção de Demarcador (A)
Direct Selection Tool - Ferramenta Seleção Direta (A)
Horizontal Type Tool - Ferramenta Texto Horizontal (T)
Vertical type Tool - Ferramenta Texto Vertical (T)
Horizontal type mask Tool - Ferramenta Máscara de Texto Horizontal (T)
Vertical type mask Tool - Ferramenta Máscara de Texto Vertical (T)
Pen Tool - Ferramenta Caneta (P)
Rectangle Tool - Ferramenta Retângulo (U)
Rounded rectangle Tool - Ferramenta Retângulo Arredondado (U)
Ellipse Tool - Ferramenta Elipse (U)
Polygon Tool - Ferramenta Polígono (U)
Line Tool - Ferramenta Linha (U)
Custon Shape Tool - Ferramenta Forma Personalizada (U)
Notes Tool - Ferramenta Observações (N)
Audio annotation Tool - Ferramenta Comentário de Áudio (N)
Eyedropper Tool - Ferramenta Conta-Gotas (I)
Color Samples - Ferramenta Classificador de Cores (I)
Measure Tool - Ferramenta Medir (I)
Hand Tool - Ferramenta Mão (H)
Zoom Tool - Ferramenta Zoom (Z)

Montagem Abstrata EX. 1

01. Pressione Ctrl+N para criar um novo documento e defina os valores abaixo.

tutoriaisphotoshop.net

02. Pressione a letra D do teclado para resetar as cores de Foreground e Background para preto e branco, pressione Alt+Backspace (a tecla acima do Enter) ou pressione a letra G do teclado para selecionar a Paint Bucket Tool e clique no documento para preencher a layer com a cor preta, pressione Ctrl+Shift+Alt+N para criar uma nova layer, pressione a letra X do teclado para alternar as cores de Foreground e Background, sua cor de Foreground deve ser a branca, pressione Alt+Backspace (a tecla acima do Enter) ou pressione a letra G do teclado para selecionar a Paint Bucket Tool e clique no documento para preencher a layer com a cor branca.

tutoriaisphotoshop.net

03. Pressione a letra M do teclado para selecionar a Rectangular Marquee Tool e crie uma seleção como a da foto abaixo.

tutoriaisphotoshop.net

04. Agora pressione a letra G do teclado para selecionar a Gradient Tool, escolha um gradiente que vá do branco para o preto no modo Linear, aplique como na foto abaixo.

tutoriaisphotoshop.net

05. Vá em Filter> Artistic> Cutout e defina os valores abaixo.

tutoriaisphotoshop.net

06. Vá em Edit> Define Brush Preset e defina os valores abaixo.

tutoriaisphotoshop.net

07. Pressione a letra B do teclado para selecionar a Brush Tool, escolha o brush criado, vá em Window> Brushes e defina os valores abaixo.

tutoriaisphotoshop.net

08. Agora vá em Layer> Delete> Layer para deletar a layer atual, ficaremos apenas com a layer em preto, pressione Ctrl+Shift+Alt+N para criar uma nova layer, escolha uma cor qualquer e aplique o brush como na foto abaixo.

tutoriaisphotoshop.net

09. Escolha a cor vermelha, diminua a opacidade do brush e aplique algumas vezes no documento.

tutoriaisphotoshop.net

10. Escolha a cor azul e repita o procedimento.

tutoriaisphotoshop.net

11. Agora vá em Filter> Blur> Motion Blur e defina os valores abaixo.

tutoriaisphotoshop.net

12. Pressione Ctrl+T para abrir a caixa de Free Transform e distorça o efeito como na foto abaixo, pressione Enter para finalizar a transformação.

tutoriaisphotoshop.net

13. Pressione a letra Q do teclado para entrar no Quick Mask Mode, pressione a letra D do teclado para resetar as cores de Foreground e Background para preto e branco, pressione a letra G do teclado para selecionar a Gradient Tool, escolha o modo de gradiente Radial e aplique no documento de cima para baixo.

tutoriaisphotoshop.net

14. Pressione a letra Q do teclado novamente para sair do Quick Mask Mode, uma seleção como a da foto abaixo será criada.

tutoriaisphotoshop.net

15. Pressione Ctrl+B para abrir a caixa de Color Balance e defina os valores abaixo.

tutoriaisphotoshop.net

16. Clique com o botão direito do mouse dentro da seleção e escolha a opção Select Inverse.

tutoriaisphotoshop.net

17. Pressione Ctrl+U para abrir a caixa de Hue/Saturation e defina os valores abaixo.

tutoriaisphotoshop.net

18. (Opcional) Pressione a letra T do teclado para selecionar a Horizontal Type Tool, escreva uma palavra qualquer ou adicione seu logo como na foto abaixo.

tutoriaisphotoshop.net

19. Para criar o efeito atrás do logo pressione Ctrl+Shift+Alt+N para criar uma nova layer, deixe a layer abaixo da layer de texto, pressione a letra D do teclado para resetar as cores de Foereground e Background para preto e branco, pressione a letra X do teclado para alternar as cores de Foreground e Background, pressione a letra B do teclado para selecionar a Brush Tool, escolha um brush de pontas suaves e tamanho médio, aplique o brush atrás do logo, pressione a letra R do teclado para selecionar a Smudge Tool, passe a ferramenta e distorça o efeito até que ele fique como o da foto abaixo, diminua a opacidade da layer para conseguir um resultado melhor.

tutoriaisphotoshop.net

20. Clique na layer que contém o efeito de Background e vá em Edit> Transform> Perspective e distorça a imagem como na foto abaixo, pressione Enter para finalizar a transformação.

tutoriaisphotoshop.net

21. No final sua imagem ficará como a da foto abaixo.

tutoriaisphotoshop.net

Site de origem: http://www.eyesontutorials.com/articles/5296/1/Stylish-minimalistic-wallpaper/Page1.html